**Note: This is a graduate level course and students need to apply and be approved to one of the graduate programs or as a non-program School of Computing and Information graduate student in order to take this course. Minimum Admission Requirements must be met. Undergraduate students who do not meet admission requirement will not normally be permitted to take this course. http://scis.athabascau.ca/

Important Links

Overview

Computer Science 674 is an elective course in the "Theory Stream" of the MScIS program. Central to the theory of computation are the concepts of automata, formal languages, grammar, algorithms, computability, decidability, and complexity. Why study theory when the current focus of Computer Science (and all the more so for Information Systems) is on technology and the pragmatic areas of knowledge concerned with the development and management of computer information systems? The reasons are manifold. Theory provides a simple, elegant view of the complex machine that we call a computer. Theory possesses a high degree of permanence and stability, in contrast with the ever-changing paradigms of the technology, development, and management of computer systems. Further, parts of the theory have direct bearing on practice, such as Automata on circuit design, compiler design, and search algorithms; Formal Languages and Grammars on compiler design; and Complexity on cryptography and optimization problems in manufacturing, business, and management. Last, but not least, research-oriented students will make good use of the theory studied in this course.

Course Objectives

The learning objectives of this course are to:

introduce students to the mathematical foundations of computation including automata theory; the theory of formal languages and grammars; the notions of algorithm, decidability, complexity, and computability.

enhance/develop students' ability to understand and conduct mathematical proofs for computation and algorithms.

Learning Outcomes

demonstrate their the understanding of key notions, such as algorithm, computability, decidability, and complexity through problem solving.

prove the basic results of the Theory of Computation.

state and explain the relevance of the Church-Turing thesis.

Outline

Unit 0: Formation of Preliminary Concepts

Automata, computability, and complexity

Mathematical tools

Definitions, theorems, and proofs

Types of proofs

Unit 1: Regular Languages

Finite automata

Nondeterminism

Regular expressions

Nonregular languages

Unit 2: Context-Free Languages

Context-free grammars

Pushdown automata

Non-context-free languages

Unit 3: The Church-Turing Thesis

Turing machines

Variants of Turing machines

Definition of "algorithm"

Unit 4: Decidability

Decidable languages

The halting problem

Unit 5: Reducibility

Undecidable problems in language theory

A simple undecidable problem

Mapping reducibility

Unit 6: Advanced Topics in Computability

The recursion theorem

Decidability of logical theories

Turing reducibility

A definition of "information"

Unit 7: Time Complexity

Measuring complexity

The class P

The class NP

NP-completeness

NP-complete problems

Evaluation

In order to receive credit for COMP 674, you must achieve a cumulative course grade of "C+" (66 percent) or better, and must achieve an average grade of at least 60 percent on the assignments, and at least 60 percent on the final examination.