ECE 304C
Theory of Computation
Usually offered: Spring
Course Level
Undergraduate
Units
3
Course Description
This is a foundational course in computer science and engineering that provides an introduction to the theory of computation. This field of study revolves around understanding the capabilities and limitations of computation, including factors such as computational power, storage requirements, and the types of computational models employed. The course primarily focuses on addressing two fundamental questions: first, whether a problem can be solved using a given abstract machine (computability), and second, determining the time and space resources necessary to solve the problem (complexity). The theory of computation has significant relevance to various engineering practices, and its principles underlie the development of efficient algorithms and the design of computer systems. Some of the key topics covered in the course include regular and context-free languages, Turing machines and their variants, decidable and undecidable problems, concepts of reducibility, computational time and space complexity, completeness, as well as hierarchy theorems. By studying these topics, students gain a deeper understanding of the fundamental limits of computation, enabling them to reason about the feasibility and efficiency of solving various computational problems. This knowledge forms a solid foundation for further exploration in computer science and engineering and related disciplines.