Models of Computation
Completed: Spring 2024
Grade: A
Course Description
This course covers different models of computation and how they relate to the understanding and better design of real-world computer programs. As examples, we will study Turing machines that help define the fundamental limits of computing, Push-down Automata that help build language parsers, and Finite Automata that help build string pattern matchers. This course also covers the basics of designing correctly functioning programs, and introduces the use of mathematical logic through Boolean satisfiability methods. The course will involve the use of hands-on programming exercises written at a sufficiently high level of abstraction that the connections between theory and practice are apparent.
Reflection
This class was immensely interesting. Diving into different types of automata it let me view programming from a different, more concrete lens. It has allowed me to solve problems in ways that I would not have considered before. In addition to automata, the dive into NP-completeness and proof by reducibility allowed me to make connections with CS4150 that I was taking at the same time, showing yet another practical application of the theory that was stressed in this course. I enjoyed the topic material so much I will be TAing for this class in the coming fall.