Course Information

CS211, Data Structures

Spring, 2010


Professor Lisa Ballesteros, 220 Clapp, 538-2421


Office Hours: M 9-10, Tu 3:15-4:30, Th 3:15-4:30, or by appointment


TA Cleo Schneider,  TA Hours TBA


Meeting times:  Lectures: T Th 11-12:15 in Kendade 307.


Course Objectives


From the course catalog: Solving problems with computers is accomplished by writing programs that operate on data to produce a desired result. The way data is organized and presented to the program can significantly affect its efficiency and simplicity and can sometimes determine whether or not a program can be written to solve the problem at all. This course presents ways of organizing data into "data structures" and analyzes how structuring the data can improve program performance.


In this course, you will:


          Become a more sophisticated programmer

          Hone your problem solving skills

          learn how to implement algorithms and data structures in Java

          learn how to evaluate and visualize data structures and algorithms

          learn how to understand (and prove) some properties of data structures and algorithms

          learn how to consider the relative merits of different structures and algorithms

          learn how to design large programs (in an object-oriented way) so that it is easy to modify them


Prerequisites:  CS 101 and CS102


Textbook:  Java Structures: Data Structures in Java, for the Principled Programmer, Duane Bailey


This book is available online for educational purposes, so you may download it and print it or read it online.  There are no books to buy for this course!  If you are interested in a good Java reference, I recommend Core Java: Volume I - Fundamentals, Cay S. Horstmann and Gary Cornell


Course Webpage: accessed via Ella at


Note: Everything on the syllabus and schedule is subject to change.  Changes will be announced in lecture and updated online.  Check the online schedule regularly for updates.



Class participation:                                         5%

Lecture Assignments:                                                      15%

Labs/Programming assignments:         50%

Midterm 1:                                                              10%

Midterm 2:                                                              10%

Final:                                                                           10%





You are expected to attend lecture and participate in discussions.  Lectures will assume you are familiar with the reading.  Most lectures will include a short assignment due at the start of the next class.  No late submissions of these assignments will be accepted as they will typically be discussed in class on the due date.  Announcements made during normal class meetings are official communications for this course. Consequently, absence is no excuse for failure to act in accordance with class announcements.  If you miss class, talk with your classmates to find out what you missed.


Working on Assignments:


All assignments submitted for grading are to be done independently, unless specified by the instructor as a group assignment.  All assignments should be typed, I will accept handwritten assignments if they are extremely neat and legible.



There are no pre-scheduled lab periods for this class, but expect to spend a significant amount of time working in the lab.  You will have lab assignments roughly each week, with a larger project due at the end of the semester.  Course software is loaded on the PCs in Clapp 202 and in Kendade 307.  Youíll need one-card access to both rooms.  If you do not have a one-card, you can get one at the Auxillary Services office, 109 Central Services (building is behind Blanchard Campus Center, next to Ciruti).


All programming assignments are to be individual work unless otherwise specified and are graded on the completeness and correctness of the program results and answers to any accompanying questions.  Follow instructions exactly.  For example if an assignment tells you not to change the order in which statements are given, then donít.  Programs that do not generate any correct results will rarely get more than 60%.  Comments in your code may help in determining partial credit when your solution is not completely correct. 


Late Assignments:

Lab/programming assignments are due on the dates specified.   Late assignments are penalized 1.08h%, where h is the number of hours late.  Extensions will only be given under extreme circumstances and only after arrangements have been made with me in advance.  Bring a USB drive with you to the laboratory in order to save project files as this protects you in the event that the network goes down and your home directory cannot be accessed.  Inability to access your account is not an acceptable excuse for not finishing an assignment.


It is extremely important to keep up to date in this class.  The lectures and labs are integral parts of this course.  In order to understand the material covered in a given day, it is important that you understand the material and concepts covered on previous days.  The most successful approach to this course is to work regularly on readings and assignments.  Donít put things off until you feel pressured by a deadline as problem solving typically takes longer than you expect it will.  If you get behind, donít wait to get help.  Ask questions in class and come to office hours.


If you have any problems, concerns, or issues you would like to discuss, come to office hours or contact me via email to make an appointment.  I am always available during office hours and am happy to try to schedule appointments outside these times when necessary.  Under NO circumstances is it acceptable to call me at home.  I check email regularly.



Academic Honesty


Copying any assignment or any portion of an assignment whether homework, exam, lab, or programming project with or without the authorís permission is not permitted.


A student submitting any work not entirely her/his own violates the Honor Code.  The penalty for such a violation is a zero on the assignment.  In accordance with the student handbook, all such violations will be reported to the Dean of Students.


A comment about working together:


I have no problem with students discussing concepts related to homework and programming assignments.  Discussion is an important aspect of learning.  However, there is a fine line between discussing a concept and solving a problem together.  It is not O.K. to write programs together and it is not O.K. to write homework assignments together unless it is specified as a group assignment.  You may discuss assignments at a high level, but the actual solution and the write-up or coding of that solution must be done independently.  All of your resources for solving homework or programming problems must be cited.  This means that if you use other books or reference materials to solve a problem, you must indicate the name of the reference used and the page on which the solution was found.  It is not OK to copy code from any resource for any assignment.  If you work in a study group, the names of your study partners must be included on all assignments.  Failing to appropriately cite any and all resources used to complete an assignment is a violation of the honor code.


What is cheating?


          Submitting a solution to any assignment that was not written or typed entirely by you.  Group assignments, when given, may be solved and written only by the members of your group.


          Sharing code, written assignments, any electronic files, or written files: either by copying, retyping, looking at, or supplying a copy to another person.



          Allowing someone else to turn in your work as his or her own.  Be sure to store your work in protected directories and remove any printouts promptly from printers.





What is not cheating?


          Clarifying ambiguities or vague points in class handouts or textbooks.