COM2030 Machines and Languages

2003-2004 Autumn Semester - Half Module - 10 Credits

Note: details may differ in some places from those given in the handbook or on the departmental Web pages for this course. The information given here should be taken to be correct. The lecturer reserves the right to vary the course contents at the time of delivery.

Teaching Method

The lecturer is Dr Matt Fairtlough. Please note spelling!

Reading weeks will be in weeks 9 and 10 of the semester.

As well as the formal lectures there will be 8 or 9 tutorial and/or laboratory sessions to support the practical exercises.  Tutorials begin in week 2.

Summary

This half-module tries to answer the questions: "what is computation?" and "how can computing machines be characterised and classified?". By introducing a series of abstract models of computing machines, it will explore the capabilities and limitations of digital computers. It will develop skills in modeling and reasoning about discrete systems, applying some of the ideas developed in the Discrete Foundations course. In particular, it will investigate simple finite state automata, pushdown automata and Turing machines and study their relation to classes of formal languages (the Chomsky hierarchy). It will also consider recursive function theory and its relation to automata theory (the Church-Turing thesis) and (if time permits) introduce the study of computational complexity.

Lecture notes

Exercise sheets

Exam revision

Other resources

There is a good tool JFLAP for designing and simulating grammars and automata which may be found among other tools on Susan Rodger's website. You can download the jar file and/or the sources; it requires Java 1.3.1 or later. There is also an applet version if you want to try out the software before downloading it. Here is the jar file. I have written some simple Haskell code implementing partial recursive functions as functions over lists.
Matt Fairtlough
Last modified: Tue Dec 23 14:54:07 GMT 2003