University of Virginia, Department of Computer Science CS200: Computer Science, Spring 2003

Notes: Monday 14 April 2003

• Saturday-Wednesday: Design reviews
• Friday, 18 April: Exam 2 out
• Wednesday, 23 April: Exam 2 Due
• 28 April (9am): Problem Set 8 Due

Exam 2
Exam 2 will be handed out Friday, and due Wednesday, 23 April. It will cover everything in the course through the end of today's lecture, but will focus on material that was not covered on Exam 1. Exam 2 is open book; you will be permitted to use DrScheme if you want, but the questions will be designed to discourage you from doing that.

You should not be surprised if the exam contains questions about measuring work using O, Θ and &Omega); complexity classes P, NP and NP-Complete; computability; models of computation; Turing Machines; Lambda Calculus; universal languages; state and mutation; programming with objects and inheritance; metalinguistic abstraction; and variations on Scheme. There may also be a question or two that expect you to define recursive procedures and use procedures as parameters and results.

Instead of a review session for Exam 2, I will have office hours this week Wednesday, after class - 3:45; Thursday 10am-10:45am; Thursday 4-5pm. You will also have an opportunity to ask questions in class Friday before receiving Exam 2.

Notes

How do we prove a model of computation is equivalent to a Turing Machine?

Lambda Calculus

term ::= variable | term term | ( term ) | λ variable . term

Alpha Reduction: (renaming variables)

λ y . Mα λ v . M [y |→ v]) where v does not occur in M.
We can can change the name of a lambda variable, but replacing all occurances of the variable in the body term with a new name that does not appear in the body term.

Beta Reduction: (substitution)

x . M) Nβ M [ x |→ N ]
Example

f . ((λ x . f (xx)) (λ x . f (xx)))) λ x . x

Making "Primitives" out of nothing but Glue

T ≡ λ xy . x)
F ≡ λ xy . y
if ≡ λ pca . pca

cons ≡ λ xy .z . zxy)
car ≡ λ p . p T
cdr ≡ λ p . p F

null ≡ λ p . T
null? ≡ λ x . (x λ y . λ z . F)

zero?null?
predcdr
succ ≡ λ x . cons F x

0null
1succ 0cons F null
2succ 1cons F (cons F null)