This lesson describes Turing machines formally and then uses JFLAP to interact with them. The lesson starts by formally deﬁning a Turing machine. Then we build a simple Turing machine in JFLAP with suggestions from the class. We show them how to run the Turing machine on input. Next we load a previously built Turing machine. The students have a picture of it on their handout. They have to determine if it is correct or not. Many students think it is correct because it works for all input strings in the language. However, there are strings not in the language that it also accepts. This illustrates the importance of coming up with a good set of test data. We then load another Turing machine and again students have to decide how to ﬁx it. We ﬁx it with their input and run it on different data to determine if it is correct. Finally, students build a Turing machine from scratch in pairs and talk about them and we go over them. This is a one period lesson.