<p>Theory of computation by M. Sipser is interesting per se. For introduction you have to practice and go in following sequence. </p>

<ol>
<li>Regular language and automata </li>
<li>Context free grammar and expressions </li>
<li>Pushdown automata</li>
<li>Non context free grammar </li>
<li>Lr(k) grammar </li>
<li>Turing Machines </li>
</ol>

<p>If interest level drops keep reading a fun book 
<a href="https://en.wikipedia.org/wiki/A_New_Kind_of_Science" rel="noreferrer">https://en.wikipedia.org/wiki/A_New_Kind_of_Science</a></p>

CC BY-SA 4.0
2018-07-03T07:30:36.607Z
2019-01-24T09:02:21.100Z
2019-01-24T09:02:21.100Z
sriram lamsal
<p>I sincerely apologize if this is not appropriate in this stack Q&amp;A, though it seemed the most fitting.</p>

<p>I want to learn formal language theory, as well as generating grammars etc. The purpose is primarily from a programming perspective (and from pure interest), not from academic requirements. My current state of knowledge includes basic college-level math (very far from good skills sadly), and of course programming skills. 
Which math and logic fields should I explore. What is the best way to learn it (other than majoring in mathematics)? 
Specific resources are welcome (as is general direction I should follow).</p>

<p>Also - what are skill requirements to properly learn the topic and understand it to the degree it may be useful in programming?</p>

<p>EDIT: my interest in this branch of mathematics started once I learned regular expressions and wanted to "delve deeper"</p>

CC BY-SA 4.0
2018-05-24T08:36:55.380Z
I think that the best book to begin is "Introduction to automata theory, languages and computation" by Hopcroft, Ullman and Motwani.
Lamine
CC BY-SA 4.0
2018-05-24T11:37:32.847Z
If you make it an answer I shall mark it correct
Niteraleph
CC BY-SA 4.0
2018-05-24T20:48:59.433Z
If you're interested in automata, I particularly like this website: http://www.automatatutor.com/
Michael Wehar
CC BY-SA 4.0
2018-05-24T20:49:50.403Z
Another book to consider is "Introduction to the Theory of Computation" by Michael Sipser.
Michael Wehar
CC BY-SA 4.0
2018-05-24T20:50:32.617Z
You might also consider taking a formal methods, formal language theory, or related course at a university or online.
Michael Wehar
CC BY-SA 4.0
2018-05-24T20:50:46.470Z
You can also email me any time.  I hope that you have a nice day!!  :)
Michael Wehar
CC BY-SA 4.0
2018-05-25T09:42:13.293Z
@Niteraleph I don't know if I can make it an answer since the question is out of scope of this site.
Lamine
CC BY-SA 4.0
2018-05-26T15:41:21.770Z
I apologize for that. Wasn't sure where to place it. If you could point me to another stack Q&A I could move the question there. Anyways, do you believe I should remove the question or leave it (whatever is more beneficial for the community of this site)?
Niteraleph
CC BY-SA 4.0
2018-05-27T14:01:03.267Z
@Niteraleph The best site for this question is https://cs.stackexchange.com/ . I think that you can ask a moderator to move it to the right site.
Lamine
<fl.formal-languages><grammars>
How to start learning formal language theory
Niteraleph
# How to start learning formal language theory

(Asked by: username_0 on 2018-05-24)

I sincerely apologize if this is not appropriate in this stack Q&A, though it seemed the most fitting.

I want to learn formal language theory, as well as generating grammars etc. The purpose is primarily from a programming perspective (and from pure interest), not from academic requirements. My current state of knowledge includes basic college-level math (very far from good skills sadly), and of course programming skills.
Which math and logic fields should I explore. What is the best way to learn it (other than majoring in mathematics)?
Specific resources are welcome (as is general direction I should follow).

Also - what are skill requirements to properly learn the topic and understand it to the degree it may be useful in programming?

EDIT: my interest in this branch of mathematics started once I learned regular expressions and wanted to "delve deeper"

**Tags:** fl.formal-languages, grammars
> **Comments:**
> **username_1**: I think that the best book to begin is "Introduction to automata theory, languages and computation" by Hopcroft, Ullman and Motwani.  
> **username_0**: If you make it an answer I shall mark it correct  
> **username_2**: If you're interested in automata, I particularly like this website: http://www.automatatutor.com/  
> **username_2**: Another book to consider is "Introduction to the Theory of Computation" by Michael Sipser.  
> **username_2**: You might also consider taking a formal methods, formal language theory, or related course at a university or online.  
> **username_2**: You can also email me any time.  I hope that you have a nice day!!  :)  
> **username_1**: @Niteraleph I don't know if I can make it an answer since the question is out of scope of this site.  
> **username_0**: I apologize for that. Wasn't sure where to place it. If you could point me to another stack Q&A I could move the question there. Anyways, do you believe I should remove the question or leave it (whatever is more beneficial for the community of this site)?  
> **username_1**: @Niteraleph The best site for this question is https://cs.stackexchange.com/ . I think that you can ask a moderator to move it to the right site.  

---

## 1 answers

### Answer by username_3 on 2018-07-03. Score: 6 | Accepted answer

Theory of computation by M. Sipser is interesting per se. For introduction you have to practice and go in following sequence.

1. Regular language and automata
2. Context free grammar and expressions
3. Pushdown automata
4. Non context free grammar
5. Lr(k) grammar
6. Turing Machines

If interest level drops keep reading a fun book
<https://en.wikipedia.org/wiki/A_New_Kind_of_Science>


---

