The course will try to give an integrated presentation of the results in these areas, showing their relations and equivalences. The development is formal but with an intuitive appeal.
Most proofs are constructive in nature.
The use of language theory concepts will have applications in engineering, compiler design, software specification, network protocol and complexity analysis. I believe in active learning, namely learning is a two way street. Therefore, I encourage the class to ask questions. I collect homework every week. Copying somebody else's work is prohibited.