CS 304: Automata and Formal Language (Monsoon 2025)

For official announcements, grade postings, and assignment submissions, please use the official course page on Google Classroom. This page serves as the main syllabus and schedule.



Logistics

Time TBD
Location TBD
Instructor Rachit Nimavat
TA None for this course
Contact (Please see Communication Policy below)
Office Hours TBD (These are drop-in sessions for conceptual questions)

Course Description

Welcome to Automata and Formal Language course! This course is aimed at second-year undergraduate students. The goal is to introduce the theoretical foundations of computer science by studying formal languages and the abstract machines that compute them. The course will cover the hierarchy of computation from simple models to universal machines. We intend to cover the following topics (detailed summary):

  • Finite Automata and Regular Languages
  • Context-Free Grammars and Pushdown Automata
  • Turing Machines and Computability
  • Computational Complexity

Expected Outcomes

  • Ability to design automata, grammars, and Turing machines for specified languages.
  • Understanding of the correspondence between different machine models and classes of formal languages.
  • Ability to write formal proofs regarding properties of languages and computation.
  • Familiarity with the fundamental limits of what is computable and the distinction between tractable and intractable problems.

Prerequisites

  • CS 101: Fundamentals of Computer Programming You should be very comfortable with fundamental data structures (lists, trees), basic algorithms (sorting, searching), and recursion (recursion).

  • Mathematical Maturity Success in this course depends on your ability of Algorithmic Thinking (how to break down a problem into a sequence of logical steps) and Abstractions (how to think about problems without getting lost in implementation details). While we will discuss writing formal proofs in class, a solid foundation in mathematical reasoning is expected.

Grading (Tentative)

Your final grade will be based on the following components. This breakdown is tentative and is subject to approval by the senate.

  • Quizzes (3-4): 20%
  • Homework Assignments (3-4): 30%
  • Midterm Exam: 25%
  • Final Exam: 25%
  • Scribing Notes / Grading Assignments: 10% bonus

Course Policies

Communication Policy

  • Google Classroom is the primary channel for all official announcements, grade postings, assignment submissions, and discussions/queries regarding course content, homework, or logistics. I strongly encourage you to answer each other’s questions!
  • Email is reserved for personal matters, such as discussing grades or personal emergencies. I will do my best to respond within a day.

Collaboration Policy

In a large, theoretical course, learning from your peers is one of the most effective tools for success. I strongly encourage you to discuss homework problems, explore general concepts, and share ideas with your classmates. You are even encouraged to use tools like Large Language Models (LLMs): this is how professionals work. However, your submitted write-up must be your own work. This means:

  • You must write up your solutions independently, without looking at another student’s write-up or consulting any resource that provides direct solutions.
  • You must cite any collaborators (including LLMs, if any) you discussed the problems with at the top of your submission. Briefly describe the nature of the discussions.

Rule of thumb: You should be able to reproduce and explain your entire solution on your own if/when asked.

Late Submission Policy

No Extensions, so plan accordingly! We’ll drop the lowest scored homework. For major personal or medical emergencies, please contact me to make arrangements.

Academic Integrity

Our community is built on trust and academic honor. Any form of cheating, plagiarism, or misrepresentation of your work is a serious violation of that trust. Such an act of academic dishonesty will result in a failing grade for the course and will be reported to the senate.


Schedule

This schedule is tentative and will be updated weekly with links to lecture notes and readings.

Week Dates Topics Readings Notes/Slides
1 Jul28 - Aug1 Course Intro, Refresher on Basic Maths, Alphabet, Strings, and Languages Chapter 1 of ALC

Textbook and Resources

I wil provide self-contained lecture notes and other resources for all topics covered in this course. You are not required to purchase the textbook, but you may find it useful to consult a physical copy, for which 5 copies are available for in-library use.

Textbook

Other Resources


The Back Bench

This official unofficial corner is for the whispers, the doodles, and the inside jokes! Share your best course-related memes/jokes/trivia/reels here and give everyone a reason to laugh.

  • Let’s kick off with a classic comic that captures the funnier side of thinking like a programmer. Welcome to the club! A Bunch of Rocks.