Define key information in fundamental engineering
My specialization is computer science and software engineering, and my knowledge of this part starts from Turning machine, a mathematical model of computation.
From the “computer composition” course, I learned that a Turning machine is a Finite State Machine (FSM) and consists of a number of functions, which is able to change FSM from one state to another based on the input.
A more general concept, Universal Turning Machine (UTM), is a Turning machine that can turn into any Turning machine with the description of the target machine as input. It means we don’t need to build specific machines for specific tasks.
For me, the theory of Turning machine has influence in two areas. One is that it helps to understand the modern computer systems (which I will describe later). The other is “Turning complete”, a way to measure the capability of a computer. There are four elements in “Turning complete”: unlimited storage, ability to do arithmetic, evaluation with condition and the support of repetition of execution. They are mandatory for a model with maximum capability of computation. Once we find them in a model, we can prove it has reached the limit of computation and therefore is “Turning complete”. That is the reason why I spent a large amount of time in my dissertation of a model-based framework (2005) to implement functional programming (or formally Lambda calculus) in an imperative programming language. Recently (2014), I implemented a Domain Specific Language (DSL) for healthcare business and filled a gap using this thesis.