This course covers the theoretical foundations of computers and algorithms, blending theory with application to demonstrate how theoretical concepts inform the design of programs and systems. Students will explore Automata Theory and Turing Machines, which illustrate the limits of computation and the concept of self-modifying machines. You'll also study pushdown automata and context-free languages, tools for analyzing programming language structures, designing compilers, and enforcing coding rules. Additionally, the course delves into algorithms for processing data, highlighting that some problems are unsolvable by computers. Students will learn to classify problems, assess algorithm efficiency, and choose optimal algorithms for specific tasks.
CS 330: Principles of Computation and Algorithm Analysis
Program
Restricted Elective