Socratic Method will be used for teaching key concepts. Students who successfully complete this course will become familiar with general concepts in the theory of computer science, gain an understanding of the concepts of automata and languages, and computability theory

- Understand proofs by construction, contradiction and induction
- Design finite automata
- Work with regular expressions
- Design context-free grammars
- Understand the workings of a Turing Machine
- Apply the concepts of decidability and reducibility
- Familiarize with concepts of Time and Space complexity

Textbook - Introduction to Theory of Computation, Michael Sipser, 3rd Edition

Piazza Discussion Forum - Every semester, the questions related to CS125 are answered exclusively on Piazza https://piazza.com/

CS125 Video Playlist

General semester structure. HW - Homework, PA - Programming Assignment