Language, Logic and Computation

About the course

This is the homepage for CS 451: Special Topics (Language. Logic and Computation), a course offered by Fritz Ruehr at the Computer Science Department of Willamette University. The course develops formal languages from the perspectives of logic, mathematics and computer science, but emphasizes semantics of programs, in contrast with the traditional treatment of formal languages as sets of strings. It is organized as a tour of successively enriched object languages and of the meta-linguistic techniques needed to rigorously describe them. Topics addressed include basic semiotic issues; finite symbols sets; partial and total functions; the combinatorics of compound symbols; natural numbers and numerals in positional notation; algebraic expressions and theories; traditional formal languages via grammars and automata; declarative variables, polynomials and scope; imperative variables and state-based semantics; while programs and fixed-points; lambda calculus and combinatory logic; and type theory. The style of presentation is influenced by functional programming, category theory, the Curry-Howard correspondence and the Squiggol school of constructive programming (catamorphisms, anamorphisms, etc.); Haskell is used as an implementation meta-language.

News

Labs (in rev. chron. order)

Lectures (in rev. chron. order)

These lecture notes are under development and there are currently significant gaps. Each lecture should ultimately link to sample code files.

Topical references (in rev. chron. order)

We won't be using a formal textbook this semester, so I will be trying to gather links to relevant on-line material. A lot of good-quality articles are available on Wikipedia, the free on-line "open source" encyclopedia (you might want to consider donating some portion of your textbook savings to their efforts).

Haskell references

We will be using the Haskell programming language as our main implementation vehicle. There are plenty of links there about the language, how to use it and some implementations (check out the wiki in particular for programming advice).

Handout archive

I will try to make some of the class hand-outs available here in PDF format when I have the time.

“Pop culture”, Haskell advocacy and miscellaneous links

Here are a few fun, interesting or otherwise difficult to categorize links that came up in lecture at various points.