In Semester 2, 2024-2025, I will be teaching CS 2200: Languages, Machines and Computation.

Administrative Information.

When and Where.

Classes are held on Monday 9 am, Tuesday 8 am, Wednesday 1 pm and Friday 11:00 am. Location: CSB 15.

Office Hours and Teaching Assistants.

The teaching assistants for the course are listed below.

Pre-requisites.

This is a core course for second year B.Tech students. There is no formal pre-requisite other than eligibility to attend the 4th semester of your BTech course. The informal pre-requisite is CS2100: Discrete Mathematics.

Academic Calendar.

Below is the tutorial and exam schedule for the course.


Office Hours.

By appointment. Please send an email to shweta@cse.iitm.ac.in.

Course Description.

The objective of the course is to introduce students to the foundations of computation. We ask fundamental questions like "What does it mean for a function to be computed?", "Are all functions computable?", "Is there a way to measure the hardness of computing a function?" We will see that the above questions are deep, and in the quest for answering them we will learn some fundamental concepts such as state, transition, reduction, decidability.

Textbooks and References.

The primary textbook for the course is Michael Sipser's "Introduction to the Theory of Computation". A useful second book is "Automata and Computability" by Dexter Kozen. The library should have multiple copies. Some useful slides are here.

Syllabus

The topics are broadly categorized as follows.



Requirements.


Topicwise Class Summaries


Lecture Topic Reference
Lec 1, 17 Jan Introduction to the course, Admin and logistics, Brief history of computing None
Lec 2, 20 Jan Review of countability, Q is countable, Power set always bigger Notes
Lec 3, 21 Jan Alphabets, strings and languages. Uncountability of the set of all languages. Chapter 0, Sipser.
Lec 4, 22 Jan Introduction to machine models. Examples of DFA. Section 1.1, Sipser
Lec 5, 24 Jan DFA formal definition, notion of acceptance, more examples Section 1.1, Sipser
Lec 6, 27 Jan Designing DFA Section 1.1, Sipser
Lec 7, 28 Jan Regular operations, closure properties Section 1.1, Sipser
Tutorial 1, 29 Jan All material so far None
Lec 8, 31 Jan Closure properties continued. Section 1.2, Sipser, Lecture 4 Kozen and these notes.
Lec 9, 3 Feb Introduction to non-determinism Section 1.2, Sipser
Lec 10, 4 Feb Nondeterministic Finite Automata Section 1.2, Sipser
Tutorial 2, 5 Feb All material so far None
Lec 11, 10 Feb Equivalence of NFA and DFA, concatenation of regular languages is regular Section 1.2, Sipser
Lec 12, 11 Feb Closure under star operation, Regular Expressions. Section 1.2, Sipser
Lec 12, 11 Feb Closure under star operation, Regular Expressions. Section 1.2, Sipser
Tutorial 3, 12 Feb All material so far None
Lec 13, 17 Feb Revision. None
Quiz 1, 18 Feb All material so far. None
Lec 14, 19 Feb Equivalence of regular expressions and finite automata. Section 1.3, Sipser
Lec 15, 21 Feb Pumping Lemma. Section 1.4, Sipser
Lec 16, 24 Feb Context Free Grammars. Section 2.1, Sipser
Lec 17, 25 Feb Context Free Grammars: Examples, Ambiguity. Section 2.1, Sipser
Tutorial 4, 26 Feb Pumping Lemma (Regular languages) and CFL. None
Lec 18, 3 March Chomsky Normal Form. Section 2.1, Sipser
Lec 19, 4 March Pushdown Automata Section 2.2, Sipser
Tutorial 5, 5 Mar CFL None
Lec 20, 7 March PDA examples Section 2.2, Sipser
Lec 21, 10 March Equivalence of CFG and PDA Section 2.2, Sipser
Lec 22, 11 March Equivalence of CFG and PDA Section 2.2, Sipser
Lec 23, 17 March Pumping Lemma for CFL Section 2.3, Sipser
Lec 24, 18 March Pumping Lemma for CFL, contd Section 2.3, Sipser
Tutorial 6, 19 Mar Pumping lemma and CFL None
Lec 25, 21 March Deterministic CFL Section 2.4, Sipser
Lec 26, 24 March CKY Algorithm Chapter 27, Kozen
Quiz 2, 25 March None None
Lec 27, 1 April Introduction to Turing machines Section 3.1, Sipser
Lec 28, 2 April Examples of Turing machines Section 3.1, Sipser
Lec 29, 4 April More examples of Turing machines Section 3.1, Sipser
Lec 29, 7 April Equivalence of Single and Multi-Tape TM Section 3.2, Sipser
Lec 30, 8 April Discussion of Quiz 2 solutions None
Lec 31, 11 April Equivalence of Deterministic and Non-Deterministic TM Section 3.2, Sipser
Lec 32, 15 April Church Turing thesis. Simple decidable languages Section 3.3, 4.1 Sipser
Lec 33, 16 April Decidable and Undecidable languages Section 4.1, 4.2 Sipser
Lec 34, 18 April Reducibility Section 5.1, Sipser
Lec 35, 21 April More on Reducibility Section 5.1, Sipser
Lec 36, 22 April Examples Section 5.1, Sipser
Lec 37, 25 April Computable Functions Section 5.3, Sipser
Lec 38, 28 April Time Complexity Section 7.1, Sipser
Lec 39, 29 April Computable Functions Section 7.2, 73, Sipser


Policies and Grades.

Collaboration is encouraged but you must write up solutions on your own. You must also write the names of all the people you discussed the problem with. In case you find material that will help you in solving some problems, you should mention the source in your writeup. Class participation will also be taken into account when assigning grades.
I expect all students to behave according to the highest ethical standards. Any cheating or dishonesty of any nature will result in failing the class plus being sent to the disciplinary committee. Read about plagiarism here.