diff --git a/README.md b/README.md index f7a6bd0..120d787 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # CS322 Class Repository This repository contains all files needed by students fall semester 2025. + +[lectures](./lectures/index.md) \ No newline at end of file diff --git a/lectures/chomsky.md b/lectures/chomsky.md new file mode 100644 index 0000000..6c43f1a --- /dev/null +++ b/lectures/chomsky.md @@ -0,0 +1,26 @@ +## Chomsky Hierarchy + +Academic studies of languages have focused heavily on the syntax of languages. This study included both natural languages and formal languages. A natural language is what we normally think of when we speak of languages. A **formal language** is a mathematical entity that follows strict rules. While a natural language has syntax, rules are frequently bent when a natural language is used. A formal language is usually defined by its syntax in a rigidly defined mathematical manner. + +Noam Chomsky is a linguist who taught at MIT. While there he developed a classification of languages that has become known as the **Chomsky Hierarchy** (aka Chomsky-Schützenberger Hierarchy). This idea centers around the idea that there are four classes of formal grammars that have the capability of generating increasingly complex languages from a syntactical point of view. + +An **automaton** is a machine that performs a function according to a predetermined set of coded instructions, especially one capable of a range of programmed responses to different circumstances. + +This idea of a hierarch of grammars was fundamental in the development of the theory of formal languages. Of interest to computer science is the fact that each of these grammar types has a dual automaton that recognizes that language. + +| grammar type | automaton | +|-------------|-----------| +| recursively enumerable | turing machine/lambda calculus | +| context sensitive | linear bounded turing machine | +| context free | pushdown automaton | +| regular | finite state machine | + +The **recursively enumerable languages** correspond in some sense to what used to be called computable functions. Any program you write in a modern programming language falls into this category. The idea that the effectively computable functions are the same as those that can be implemented with a Turing machine is known as the **Church-Turing thesis**. + +The remaining languages are characterized by the structure of their syntax. + +The **context sensitive languages** are not going to be described in this course. + +The **context free languages** have a syntax structure that forms tree shapes. These are very useful in computing. Most programming languages will specify a context free grammar for the language and use a program called a parser to produce the corresponding tree structure. + +The **regular languages** are known to programmers as regular expressions. diff --git a/lectures/index.md b/lectures/index.md new file mode 100644 index 0000000..f61c735 --- /dev/null +++ b/lectures/index.md @@ -0,0 +1,3 @@ +# CS322 lecture notes +* [semiotics](./semiotics.md) +* [languages and machines](./chomsky.md) diff --git a/lectures/semiotics.md b/lectures/semiotics.md new file mode 100644 index 0000000..21cef73 --- /dev/null +++ b/lectures/semiotics.md @@ -0,0 +1,17 @@ +## Semiotics +**Semiotics** is the study of signs and symbols and their use or interpretation. +What is a sign? +A **sign** is a token that represents something. +What a sign represents depends upon the interpreter of that sign. +The intended meaning is often referred to as the value of the sign. +A **symbol** likewise is a token that represents something. (Interesting side note is to explore the entymology of the word.) + + +### 3 Points of view of semiotics + **syntax** - the grammar or structure of a language + **semantics** - the meaning of a language + **pragmatics** - the effective use of a language + +Duality, in mathematics, principle whereby one true statement can be obtained from another by merely interchanging two words. It is a property belonging to the branch of algebra known as lattice theory, which is involved with the concepts of order and structure common to different mathematical systems. A mathematical structure is called a lattice if it can be ordered in a specified way (see order). Projective geometry, set theory, and symbolic logic are examples of systems with underlying lattice structures, and therefore also have principles of duality. + +The development of symbolic logic led to the development of programming languages. **Programming languages depend upon the duality that exists between a language and the machine that recognizes that language**.