University of Virginia Computer Science
CS216: Program and Data Representation, Spring 2006
08 February 2006
- Learn to write programs that are both correct and
- 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 high-level 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:
Students without the expected background may take the class, but will
need to learn some background material on their own.
- 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
- 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
Meetings: Mondays and Wednesdays at 11:00-11:50 am in
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.
Harry R. Lewis and Larry Denenberg, Data Structures & Their
, Addison-Wesley, 1991. ISBN 0-673-39736-X.
It should be available soon at the UVa Bookstore, or you can order it
($77.00), or search
for used versions
(from about $45.00). In addition to the textbook, there will be supplemental readings from
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.
Send mail to email@example.com
to reach the whole course staff. This is the best address to use when
you have questions about course content or assignments.
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,
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
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,
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
|Problem Sets||50 (40-70)|
|Exam 1||15 (5-20)||Exam 2||15 (10-20)
||Final Exam||20 (15-50)
||Class Contribution||0 (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.