In today’s class we’ll spend the day looking at different considerations when designing computation with finite automata. In particular, we’ll look at:

- Establishing
*invariants*about states. - Utilizing
*patterns*of states to accomplish common tasks in automata.

For today, review the *Designing Finite Automata* section of Sipser chapter 1 (pp. 41–43).

**Reading Problem (Corners)**

Design well-formed DFAs over the alphabet \(\Sigma = \{\, 0, 1 \,\}\) that recognize the languages:

- \(L_1 = \emptyset\),
*i.e.*, the empty set of strings. - \(L_1 = \Sigma^*\),
*i.e.*, all possible strings generated from \(\Sigma\).