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

08 February 2006

CS216 Syllabus
Course Objectives:
 Learn to write programs that are both correct and
delightful.
 Predict how decisions about data representation will
impact the implementation and performance of an application.
 Analyze the asymptotic complexity of an algorithm and identify good
algorithms for solving problems.
 Understand how a program executes at levels of abstraction ranging
from a highlevel programming language to machine memory.
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:
 Programming: comfortable creating
programs that fill more than one screen, and understanding and modifying
programs that involve multiple files. Students should be familiar with
control structures commonly found in popular languages including
decision and looping structures, and be comfortable with procedures and
recursive definitions.
 Mathematics and Logic: understand basic arithmetic,
exponentiation, and logarithms, and be familiar with sets and graphs.
Should be comfortable with symbolic logic, logicial implication, and
standard proof techniques including proof by contradiction and proof by
induction.
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:0011:50 am in
Olsson 120.
Sections: All students in the class must register for and
participate in one of three sections: (1) Mondays, 7:008:45pm (Thorton D223), (2)
Tuesdays, 3:305:15pm (Thorton D221), or (3) Tuesdays, 7:309: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 selfcheck quizzes, and help sessions on the course assignments.
Textbook:
Harry R. Lewis and Larry Denenberg,
Data Structures & Their
Algorithms, AddisonWesley, 1991. ISBN 067339736X.
It should be available soon at the UVa Bookstore, or you can order it
from
Amazon
($61.60),
AddisonWesley
($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: http://www.cs.virginia.edu/cs216.
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
cs216staff@cs.virginia.edu
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 (
evans@virginia.edu, phone
x22218, Olsson 236A). I will hold regular office hours Wednesdays, 23pm and
Fridays, 10:30am11: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 SitthiAmorn
Assignments
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 insection or inclass
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.
Topics
The expected topics covered in CS216 include Analysis of Algorithms
— correctness, efficiency, asymptotic complexity; Basic Data
Structures (lists, trees, strings, arrays, hash tables); LowLevel
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.
Evaluation
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 Sets  50 (4070) 
Exam 1  15 (520) 
Exam 2  15 (1020) 
Final Exam  20 (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. Spend your energy focusing on
what you are learning, instead of worrying about your grade.