CS200: Computer Science, Spring 2002

Course Objective. The goal of this course is to train students with no prior experience in computing to think like computer scientists. Syllabus
Course Description. Despite its name, Computer Science has very little to do with the beige boxes we call computers, and it is far from being a science. It has more in common with music and mathematics than it does with science or engineering. At its core, Computer Science is the study of imperative knowledge. Whereas mathematics is all about declarative knowledge ("what is"), Computer Science is all about "how to" knowledge.
Most of Computer Science stems from three simple ideas:
Although these ideas are simple, they have profound implications that it takes many years to fully appreciate.
 You can define things in terms of themselves (recursive definitions).
 You can treat procedures and data as one and the same (first class procedures).
 When you give something a name, it becomes more useful (abstraction).
The course will be designed to enable students to appreciate, use and understand ideas at the core of Computer Science. This course is meant to cover ideas that will be useful and interesting to students, whether or not they major in Computer Science.
Expected Background: This course is open to students with no prior background in computer science or programming. We expect students to know how to use email and the web, but no other background is required.
Meetings: Mondays, Wednesdays and Fridays at 11:0011:50 am in Cabell Hall Room 431.
Books: There are two required books for this course:
We will not cover all of either book, but will cover most of Chapters 1–4 of SICP and most of Part I of GEB. There will also be a few additional readings.
 Structure and Interpretation of Computer Programs ("Wizard Book"), by Harold Abelson and Gerald Jay Sussman with Julie Sussman [MIT Press] (referred to as SICP)
 Gödel, Escher, Bach: An Eternal Golden Braid, by Douglas R. Hofstadter (referred to as GEB)
Web page: http://www.cs.virginia.edu/cs200. This page is updated often and students are expected to visit it regularly (almost every day). All lectures, notes and assignments for the course will be posted on the web site.
Staff
Coach: David Evans
devans@virginia.edu phone x22218 (office), (804) 8251362 (mobile) office Olsson, 236A office hours Wednesdays, 2:303:30pm; other times (including lunch after class) arranged by email or after class Aaron ("Spiff") Crickenberger (spiff@virginia.edu)Staffed lab hours will be posted on the course web site.
Jon Erdman (jle3f@virginia.edu)
Dante Guanlao (dante@virginia.edu)
Stephen Liang (ssl3x@virginia.edu)
Portman Wills (portman@virginia.edu)Email: Send mail to cs200staff@cs.virginia.edu to reach the whole course staff.
Assignments
Problem Sets. There will be approximately eight problem sets that involve both written questions and programming problems. Some problem sets will be done by small groups of students. We expect doing the problem sets will be the best way to learn the course material.The likely problem set topics and due dates are:
Actual topics and due dates are subject to change.
 Problem Set 1: Mosaics (Out: 16 Jan, Due: 25 Jan)  Introduction, DivideandConquer Problem Solving, Procedures
 Problem Set 2: Function Fractals (Out: 25 Jan, Due: 4 Feb)  Recursion, Highorder Functions
 Problem Set 3: LSystem Fractals (Out: 4 Feb, Due: 13 Feb)  Lists, List Recursion
 Problem Set 4: Cryptography (Out: 13 Feb, Due: 22 Feb)  Review for Exam 1
 Problem Set 5: State (Out: 27 Feb, Due: 8 March)
 Problem Set 6: Adventure (Out: 8 March, Due: 25 March)  ObjectBased Programming
 Problem Set 7: Quantum Scheme (Out: 25 March, Due: 5 April)  Languages as Abstractions, Metacircular Evaluator
 Problem Set 8: Project (Out: 5 April, Part 1 Due: 15 April, Part 2 Due: 22 April, Final Due: 29 April)
Exams. There will be two exams during the semester (February 25th and March 10th) and a final scheduled by the registrar. All exams will be open book and open notes.
Collaboration Policy
Your fellow students are your best resource. In general, students are encouraged to discuss readings and assignments in study groups. Some assignments may have a specific collaboration policy, which should be explained clearly on the assignment. If this is ever unclear, ask the instructor.Students are also encouraged to consult outside sources, including human experts. Always list the resources you used (students, outside experts, papers, web sites) on your submission.
All students are required to sign the course pledge.
Evaluation
Grading will be based on approximately the following weighting:
Problem Sets 50 (4070) Exam 1 10 (515) Exam 2 15 (1020) Final Exam 25 (1550) Class Contribution 0 (010) Grades will be tabulated varying the weights assigned to each category in several different ways using the ranges above. Some of those weightings will drop the lowest problem set score. In general, the weighting that is best for you is used.
Regardless of these weightings, all students who put an honest effort into all the assignments and convince me they have learned to think like a computer scientist by the end of the course will receive an A as a final grade.
University of Virginia Department of Computer Science CS 200: Computer Science 
David Evans evans@virginia.edu Using these Materials 