# Stanford OpenEdx: Automata Theory

with  Jeffrey Ullman

I am pleased to be able to offer free over the Internet a course on Automata Theory, based on the material I have taught periodically at Stanford in the course CS154. Participants have access to screencast lecture videos, are given quiz questions, assignments and exams, receive regular feedback on progress, and can participate in a discussion forum. Those who successfully complete the course will receive a statement of accomplishment. You will need a decent Internet connection for accessing course materials, but should be able to watch the videos on your smartphone.

The course covers four broad areas: (1) Finite automata and regular expressions, (2) Context-free grammars, (3) Turing machines and decidability, and (4) the theory of intractability, or NP-complete problems.

Why Study Automata Theory?

This subject is not just for those planning to enter the field of complexity theory, although it is a good place to start if that is your goal. Rather, the course will emphasize those aspects of the theory that people really use in practice. Finite automata, regular expressions, and context-free grammars are ideas that have stood the test of time. They are essential tools for compilers. But more importantly, they are used in many systems that require input that is less general than a full programming language yet more complex than "push this button."

The concepts of undecidable problems and intractable problems serve a different purpose. Undecidable problems are those for which no computer solution can ever exist, while intractable problems are those for which there is strong evidence that, although they can be solved by a computer, they cannot be solved sufficiently fast that the solution is truly useful in practice. Understanding this theory, and in particular being able to prove that a problem you are facing belongs to one of these classes, allows you to justify taking another approach — simplifying the problem or writing code to approximate the solution, for example.

During the course, I'm going to prove a number of things. The purpose of these proofs is not to torture you or confuse you. Neither are the proofs there because I doubt you would believe me were I merely to state some well-known fact. Rather, understanding how these proofs, especially inductive proofs, work, lets you think more clearly about your own work. I do not advocate proofs that programs are correct, but whenever you attempt something a bit complex, it is good to have in mind the inductive proofs that would be needed to guarantee that what you are doing really works in all cases.

## Syllabus

Week 1: Finite Automata
Week 2: Regular Expressions and Properties of Regular Languages
Week 3: Context-Free Grammars and Languages
Week 4: Properties of Context-Free Languages, plus introduction to Turing Machines
Week 5: Turing Machines and Undecidability
Week 6: Intractable Problems (NP-Completeness)

18 Student
reviews
Cost Free Online Course
Pace Self Paced
Institution Stanford University
Provider Stanford OpenEdx
Language English
Certificates Certificate Available
Hours 8-10 hours a week
Calendar 6 weeks long

Disclosure: To support our site, Class Central may be compensated by some course providers.

##### FAQ View All
What are MOOCs?
MOOCs stand for Massive Open Online Courses. These are free online courses from universities around the world (eg. Stanford Harvard MIT) offered to anyone with an internet connection.
How do I register?
To register for a course, click on "Go to Class" button on the course page. This will take you to the providers website where you can register for the course.
How do these MOOCs or free online courses work?
MOOCs are designed for an online audience, teaching primarily through short (5-20 min.) pre recorded video lectures, that you watch on weekly schedule when convenient for you.  They also have student discussion forums, homework/assignments, and online quizzes or exams.

## 18 reviews for Stanford OpenEdx's Automata Theory

3 out of 3 people found the following review useful
5 years ago
completed this course.
This course covers following topics : finite automata (deterministic, non-deterministic), regular expressions, context-free grammars and languages, Turing machines, decidability, and P and NP problems. The course closely follows the book “Introduction to Automata Theory, Languages, and Computation” by John Hopcroft, Ra Read More
This course covers following topics : finite automata (deterministic, non-deterministic), regular expressions, context-free grammars and languages, Turing machines, decidability, and P and NP problems. The course closely follows the book “Introduction to Automata Theory, Languages, and Computation” by John Hopcroft, Rajeev Motwani and Jeffrey Ullman. I found the book more interesting than video lectures that , in my opinion, were too long and sometimes boring. Last two weeks, again, in my opinion, were rushed and I didn't really understand P and NP problems. That said, I'm glad I took this course and satisfied my interest in regular languages and context-free grammars.
5 out of 5 people found the following review useful
4 years ago
completed this course.
Automata lead me to more revelations about the nature of computing than any other class I’ve taken, online or offline. It was fantastic. Discrete math is definitely a pre-requisite but the course info page provided a link to a free online book for students without the needed background! The only caveat about this clas Read More
Automata lead me to more revelations about the nature of computing than any other class I’ve taken, online or offline. It was fantastic. Discrete math is definitely a pre-requisite but the course info page provided a link to a free online book for students without the needed background!

The only caveat about this class is that unlike a lot of MOOCs, just working at the keyboard doesn’t work so well. I strongly recommend breaking out a pencil and paper and working through all the problems in the videos and homework assignments.
1 out of 1 people found the following review useful
2 years ago
completed this course.
Automata is an interesting concept and I had no prior knowledge to this part of computer science. Course content is good but one needs to invest lot of effort to learn it. I used 2 books linz(1) and ullman(2) books for studying the subject. But still i need to study hard to learn the concepts properly. NP complete and Read More
Automata is an interesting concept and I had no prior knowledge to this part of computer science. Course content is good but one needs to invest lot of effort to learn it. I used 2 books linz(1) and ullman(2) books for studying the subject. But still i need to study hard to learn the concepts properly. NP complete and context free grammars were the points where i became blank.

But finally completed the course :D

Cheers!

2 out of 4 people found the following review useful
4 years ago
completed this course.
As the other reviewer stated, the lectures are too long , and the concepts advanced is a very rapid fashion.

However i would say , i don't have a computer science or maths background. It was useful for quality information on automata
2 years ago
completed this course.
Automata is an interesting concept and I had no prior knowledge to this part of computer science. Course content is good but one needs to invest lot of effort to learn it. I used 2 books linz(1) and ullman(2) books for studying the subject. But still i need to study hard to learn the concepts properly. NP complete and Read More
Automata is an interesting concept and I had no prior knowledge to this part of computer science. Course content is good but one needs to invest lot of effort to learn it. I used 2 books linz(1) and ullman(2) books for studying the subject. But still i need to study hard to learn the concepts properly. NP complete and context free grammars were the points where i became blank.

But finally completed the course :D

Cheers!

0 out of 1 people found the following review useful
2 years ago
partially completed this course, spending 10 hours a week on it and found the course difficulty to be hard.
10 months ago
completed this course.
2 years ago
completed this course.
3 years ago
completed this course.
a year ago
completed this course.
2 years ago
completed this course.
2 years ago
partially completed this course.
2 years ago
completed this course.
2 years ago
completed this course.
2 years ago
completed this course.
0 out of 3 people found the following review useful
3 years ago
dropped this course.