Theory of computation Flashcards
Logical reasoning
The use of a set of facts (axioms) to draw conclusions and determine whether new information is true or false.
Algorithms
A sequence of steps that can be followed to complete a task and that always terminates.
Correctness
An algorithm is said to be correct when it is consistent with the specification and produces the expected output for any given input.
Efficiency
A property of an algorithm that is related to the amount of resources (memory space and time in particular) that an algorithm uses in its execution.
Hand-tracing
The process of looking at a program’s entire code or code extract and running through the instructions as though you are the computer.
Pseudo-code
A human-readable method of writing the steps of an algorithm without any particular programming language.
Abstraction by generalisation or categorisation
Simplifying a problem by grouping together common characteristics of a problem to arrive at a hierarchical relationship.
Representational abstraction
Simplifying a problem by only taking into consideration the necessary details required to obtain a solution, leaving a representation without any unnecessary details.
Information hiding
The process of hiding all details of an object that do not contribute to its essential characteristics.
Procedural abstraction
Simplifying a problem by breaking it down into a series of procedures or subroutines that are generalised with variable parameters. Knowledge of the implementation of each procedure is irrelevant.
Procedure
The result of abstracting away the actual values used in any particular computation is a computational pattern or computational method.
Functional abstraction
Simplifying a problem by breaking it down into a series of reusable functions which disregard the particular computational method.
Data abstraction
The storage and representation of data in a computer system along with its logical description and interaction with operators. This allows the construction of new compound data objects from existing ones.
Data objects
Data abstractions that hide details of how data are actually represented from the user.
Problem abstraction/reduction
The repeated removal of unnecessary details from a problem until an underlying problem representation is reached which is identical to a previously solved problem.
Procedural decomposition
The process of breaking down a problem into a number of sub-problems, so that each sub-problem accomplishes an identifiable task, which might itself be further subdivided.
Composition abstraction
The reverse process of decomposition where a complex system of compound procedures is built from its smaller, simpler procedures.
Data abstraction composition
The process of combining data objects to form compound data.
Automation
The process of creating algorithms and implementing them as data structures and models of real-life situations that run without a significant need for human intervention.
Accepting states
An optional state of a FSM that indicates whether or not an input has been accepted by the FSM.
Finite state machines
A model of computation for a machine that is always in one of a fixed number of states.
Mealy machines
A finite state machine that determines its outputs from the present state and from the inputs.
State transition diagrams
A visual representation of a FSM that uses circles to represent states and arrows to indicate transitions between states.
State transition tables
A tabular representation of a FSM that contains the current state, inputs and their consequent successor state.