University of Virginia Computer Science
CS216: Program and Data Representation, Spring 2006

08 February 2006
[PDF version for printing]

CS216 Syllabus

Course Objectives:

Expected Background: Either (CS101, CS201, and CS202) or (CS150 with a B+ or better) or (Instructor Permission). Students entering CS216 are expected to have background in:

Students without the expected background may take the class, but will need to learn some background material on their own.

Meetings: Mondays and Wednesdays at 11:00-11:50 am in Olsson 120.
Sections: All students in the class must register for and participate in one of three sections: (1) Mondays, 7:00-8:45pm (Thorton D223), (2) Tuesdays, 3:30-5:15pm (Thorton D221), or (3) Tuesdays, 7:30-9:15pm (Thorton D223). A variety of activities will be done in section meetings including group work on problems, review of material from the lecture and readings, taking self-check quizzes, and help sessions on the course assignments.
Textbook: Harry R. Lewis and Larry Denenberg, Data Structures & Their Algorithms, Addison-Wesley, 1991. ISBN 0-673-39736-X. It should be available soon at the UVa Bookstore, or you can order it from Amazon ($61.60), Addison-Wesley ($77.00), or search for used versions (from about $45.00). In addition to the textbook, there will be supplemental readings from other sources.

Web page: 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.
Email: Send mail to to reach the whole course staff. This is the best address to use when you have questions about course content or assignments.

Coach: David Evans (, phone x2-2218, Olsson 236A). I will hold regular office hours Wednesdays, 2-3pm and Fridays, 10:30am-11:30am. If you want to meet at another time, send me email (listing several possible times when you are available) to arrange a meeting.
Assistant Coaches: Erika Chin, David Faulkner, Erin Golub, Sam Guarnieri, Katherine Jogerst, Phu Le, and Pitchaya Sitthi-Amorn


Problem Sets. There will be about eight problem sets that involve both written questions and programming problems. Some problem sets will be done by small groups of students. For almost all students, doing the problem sets will be the best way to learn the course material. Unless noted otherwise, problem sets are due at the beginning of class (11:00 am) on the day they are due. (See the schedule for the problem set topics and due dates.)

Quizzes. There may be several short in-section or in-class quizzes throughout the semester. These may or may not be announced in advance. Except in unusual circumstances, these will have no effect on your grade. Instead, they are used to allow you and I to determine if important concepts have been understood throughout the semester.

Exams. There will be two exams during the semester and a final. Assuming the course staff and your classmates have good confidence in the honor system, exams will be take home and open book. Exam 1 will be handed out on Wednesday, February 22 and due on Monday, February 27. Exam 2 will be handed out on Wednesday, April 19 and due on Monday, April 24.

Collaboration Policy

Your fellow students are your best resource. Except on assignments and exams which are done individually, students are encouraged to discuss readings and assignments in study groups. Assignments will contain a specific collaboration policy, which should make it very clear what kinds of collaboration are appropriate for that assignment. If this is ever unclear, ask to make sure before proceeding.

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.

Several questions on your registration survey are designed to measure how much confidence students in the class have in the honor system. A course pledge will be written that reflects these responses. All students will be required to sign a course pledge, which will be distributed at the second class meeting.


The expected topics covered in CS216 include Analysis of Algorithms — correctness, efficiency, asymptotic complexity; Basic Data Structures (lists, trees, strings, arrays, hash tables); Low-Level Programming in C (data abstraction, types); Data Representation (numbers, pointers); Virtual Machines (memory management, security, interpretation); Assembly Language Programming (addressing, calling conventions); and Crossing Abstraction Layers. For details, see the course schedule.


Students who demonstrate mastery of the course objectives will receive an A in CS216. When this is in doubt, grades will be based on approximately the following weighting:

Problem Sets50 (40-70)
Exam 115 (5-20)
Exam 215 (10-20)
Final Exam20 (15-50)
Class Contribution0 (0-10)

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. Spend your energy focusing on what you are learning, instead of worrying about your grade.

CS216: Program and Data Representation
University of Virginia
David Evans
Using these Materials