@comment(Hey, EMACS, this is -*- SCRIBE -*- input)
@device(dover)
@make(6001)

@modify(excounter, numbered [Exercise @1], referenced [@1])

@PageHeading(left "6.001 -- Spring Semester 1986",
             center "@Value(Page)",
             right "Problem set 3")

@begin(center)
MASSACHUSETTS INSTITUTE OF TECHNOLOGY
Department of Electrical Engineering and Computer Science
6.001 Structure and Interpretation of Computer Programs
Spring Semester, 1986

Problem Set 3
@end(center)
@blankspace(0.25 in)

@begin(flushleft)
Issued: Thursday, 20 February 1986

Due:
@begin(itemize)
Wednesday, 26 February 1986
for recitations meeting at 9:00, 10:00, and 11:00

Friday, 28 February 1986
for recitations meeting at 12:00, 1:00, and 2:00
@end(itemize)

Reading: From text, Chapter 2, section 2.1.
@end(flushleft)

@section(Homework exercises)

Write up and turn in the following exercises from the text:
@begin(itemize)

Exercise 2.2:  Geometry. In addition, define the following procedures:
@begin(programexample)
  (equal-points? p1 p2)   ; true iff p1=p2
  (equal-segments? s1 s2) ; true iff s1 and s2 correspond to the
                          ;  same segment (ignoring order of points)
  (print-point p)         ; print coordinates of point p, legibly
  (print-segment s)       ; print end points of segment s, legibly
  (length-segment s)      ; computes the length of segment s
  (vertical? s)           ; true iff s is a vertical segment
  (horizontal? s)         ; true iff s is a horizontal segment
  (parallel? s1 s2)       ; true iff s1 is parallel to s2
  (perpendicular? s1 s2)  ; true iff s1 is perpendicular to s2
  (on-segment? p s)       ; true iff p is on s (extended in length)
  (on-bisector? p s)      ; true iff p is on perpendicular bisector of s
  (third-side s1 s2)      ; if s1 and s2 form two sides of a triangle,
                          ;  returns the third side
@end(programexample)

Exercise 2.3:  Whiz-bang!

Exercise 2.4:  Godel numbers

@end(itemize)
