# Theory of Computing (2024)

In this course we will take a look at various formal computing models. They enable us to classify languages based on their “difficulty”. We will also see how the theory is applied to various fields like compiler design.

## Administrivia

The lectures will be on J1 and J2 slots in hall 10/201. The tutorial will be on I2 in hall 1/102.

## Lectures

### Mar 05

Definition of PDA.

### Mar 01

Grammar for arithmetic expressions. Associativity and precedence handling.

### Feb 28

Ambiguity in context-free grammars.

### Feb 27

Context-free grammars. Derivations.

### Feb 16

Problem solving session on regular languages.

### Feb 13

Problem solving session on regular languages.

### Feb 09

Revision on proof writing.

### Feb 06

Pumping lemma and proving non-regularity.

### Feb 02

NFAs to regular expressions through GNFAs.

### Jan 30

Regular expressions to NFAs.

### Jan 23

Regular expressions.

### Jan 19

Converting NFA to DFA (subset construction).

### Jan 16

Formal definition of NFA. NFA construction for union, concatenation, Kleene star.

### Jan 9

Closure of regular languages under union. Concatenation of languages. NFA.

### Jan 5

DFA.

### Jan 3

Overview of the course. Finite automata.

## References

- “Introduction to Theory of Computation”, Michael Sipser, 3rd edition.
- Google classroom for announcements