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

Notes: Monday 28 April 2003

PS8 Presentations
  1. Hoo Knows Where to Live (Salvatore Guarnieri, Sarah Payne, Samuel Sangobowale, Grace Chang)
  2. Crossing Words (Andrea Jacobs, Sarah Bergkuist, Lindy Brown, Lauren Cryan)
  3. Forum for Change at UVa (Anoop Gambhir, Katrina Salmons, Patrick Daniel Lane)
  4. Hoos Trading Books (Arielle Myhre, Daniel Greene, Jeffrey Arrington, Jessica Ruge, Sean Mays)
  5. The Adventure Nexus (Ramsey Arnaoot, Will Brand, Steve Marchette, Patrick Rooney)
  6. Charlottesville Restaurants (Dave Madaras, Krystal Ball, Katie Eckerle, Zach Hill)
  7. Club Baseball (Nolan Madge)
  8. Flash Card Builder for Pictoral Languages (Chalermpong Worawannotai, Justin Pan, Ed Michell, Qi Wang)
  9. Hoos Where? (Matt Mehalso, Tim Shull, Jimmy Lee)
  10. NoVa Debate (Andrew Connors)
  11. Student Pugwash (Meg Olson, Jessica Nute)

The winning teams will select their prizes from these books. Non-winning teams are encouraged to read these books also!

Beach Reading

Simon Singh, The Code Book — history of cryptography

Surely You're Joking, Mr. Feynman!: Adventures of a Curious Character — stories about Richard Feynman, nobel prize winning physcist, codebreaker, computer scientist, teacher and drummer.

Matt Ridley, Genome: The Autobiography of a Species in 23 Chapters

Lawn Reading

Douglas Hofstadter, Metamagical Themas: Questing for the Essence of Mind and Pattern — collection of his Scientific American essays

Raymond Smullyan, To Mock a Mockingbird, including an Amazing Adventure in Combinatory Logic — puzzles based on Lambda Calculus. (David Keenan, To Dissect a Mockingbird, explains the mapping to Lambda Calculus.)

Picture Books

The Magic of M. C. Escher

Benoit Mandelbrot, The Fractal Geometry of Nature.

James Watson with Andrew Berry, DNA: The Secret of Life.

What Next?

I think that it's extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customer got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don't think we are. I think we're responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don't become missionaries. Don't feel as if you're Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don't feel as if the key to successful computing is only in your hands. What's in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.

Alan Perlis, quoted in Abelson & Sussman, Structure and Interpretation of Computer Programs

Although CS200 has striven to be consistent with Perlis' spirit, when you fly in an airplane, put your money in a bank, get LASIK eye surgery, or live near a nuclear power plant, you would be worried if the people who programmed those things agreed with Alan Perlis that their job was not to make then "error-free". If you want to learn how to make robust programs and reason about their correctness, take CS201J: Engineering Software in the fall (Tuesdays and Thursdays, 12:30-1:45). CS201J focuses on engineering, not computer science. That means the course is mostly about ideas and methods for building programs that behave reliably under constraints of cost and time (how long does it take to get the program working, and how expensive will it be to change it). The ideas and techniques you learn from CS201J will enable you to think about design more clearly (whether of software, or something else), and will lead you to build more useful and exciting programs than you would without them. CS201J counts identical to CS201 for all graduation requirements, and serves as adequate preparation for later CS courses.

If you are interested in programming models based on biology, talk to me about summer opportunities for students in my research group.

If you liked PS8 and want to develop web sites talk to me about joining the CS Web Team.

If you want to learn more about the history of computing, take MDST 110.

If you want to learn more about Ada Byron's father, take ENNC382.

If you want to learn more about logic, take PHIL 242.

If you want to learn more about how language works, try AMEL 365.

If you want to learn about music and computers, take MUSI 339.

If you want to learn more about cryptology, take CS551: Information System Security.

If you want to learn more about how biology programs, take BIOL 405.

If you want to learn more about quantum physics, try PHYS 355 (at your own risk!).

If you want to learn more about quantum computing, come to the Conference and Workshop on Coding Theory and Quantum Computing (May 20-24 at UVa)

If you finish reading GEB and want to read more by Hofstadter, try Metamagical Themas : Questing for the Essence of Mind and Pattern (a collection of his essays for Scientific American) and then Le Ton Beau De Marot : In Praise of the Music of Language (all about translation).

CS 200

CS 200: Computer Science
Department of Computer Science
University of Virginia

Circle Fractal by Ramsey Arnaoot and Qi Wang
Using these Materials