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

Notes: Wednesday 20 March 2002

• Monday, 25 March: Problem Set 6
• Wednesday, 27 March: Read SICP, Chapter 4 (you may skip 4.1.6 and 4.1.7 and 4.4-end). This is the last reading assignment from SICP. Some of the most important ideas in this chapter are hidden in footnotes, so make sure to read the footnotes also. Section 4.3 describes how to define a nondeterministic programming language, which will be very useful to your for Problem Set 7.
• Before 3 April: GEB, Aria with Diverse Variations and Chapter XIII: BlooP and FlooP and GlooP. This chapter is about computability, and related to the halting problem in today's class. You will not be assigned to read Chapter XIV, but it goes into more depth on Gödel's proof and it recommended.
Computability
Proof: A proof of S in an axiomatic system is a sequence of strings, T0, T1, ..., Tn where:
• The first string is the axioms
• For all i from 1 to n, Tn is the result of applying one of the inference rules to Tn-1
• Tn is S
Halting Problem

Input: a procedure P (described by a Scheme program)
Output: true if P always halts (finishes execution), false otherwise.

Malicious Code Problem

Is the Malicious Code Problem decidable? (think about this before Friday)

Input: a procedure P
Output: #t if P is would do something bad, #f otherwise.

Assume we have a precise definition of what something bad means (for example, format your hard drive).