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

Notes: Friday 15 February 2002

• Friday, 22 February: Problem Set 4
• Before 18 March: GEB all of Part I
• Monday, 25 February: Exam 1 Out (will be take-home, shouldn't take more than a few hours, but there will be no time limit)
• Wednesday, 27 February: Exam 1 Due

Quick Sort
```(define (filter f lst)
(insertlg
(lambda (el rest) (if (f el) (cons el rest) rest))
lst null))

(define (quicksort cf lst)
(if (null? lst) lst
(append
(quicksort cf
(filter (lambda (el) (cf el (car lst))) (cdr lst)))
(list (car lst))
(quicksort cf
(filter (lambda (el) (not (cf el (car lst)))) (cdr lst))))))
```
Secrets of the Universe
```(define (computing-power nyears)
(if (= nyears 0) 1 (* 1.587 (computing-power (- nyears 1)))))
;;; doubling every 18 months = ~1.587 * every 12 months

(define (simulation-work scale)
(* scale scale scale)) ; Simulation is O(n^3) work

(define (log10 x) (/ (log x) (log 10))) ;; primitive log is natural (base e)

(define (knowledge-of-universe scale) (log10 scale))

(define (find-knowledge-of-universe nyears)
;;; Size of simulation that can execute in nyears
(define (find-biggest-scale scale)
(if (> (/ (simulation-work scale) 1000) ; we can simulate size 10 universe today
(computing-power nyears))
(- scale 1)
(find-biggest-scale (+ scale 1))))
(knowledge-of-universe (find-biggest-scale 1)))
```
Golden Ages