Overview

Before getting to the fun parts of this course, we need to develop the notion of a language as a formal object. We’ll develop this notion from the ground up, starting with the basic concepts of set theory then using those concepts to develop the concept of strings on an alphabet and the set of all languages constructed from those strings.

As we develop these formal tools, we will also see how they are implemented in Python. I’m going to assume that you have some basic Python under your belt: that you can competently write scripts that do non-trivial things and can work competently with Python’s object-oriented programming facilities but maybe not develop a package on your own.