CSci 210: Data Structures
Advanced programming through data structure design and analysis
Class: Mon, Wed 1 - 2:25, Lab: Wed 2:30-3:55 in Searles 126/128
Syllabus & Labs
Solving computational problems requires knowledge of algorithms
and data structures and the ability to estimate efficiency in order to
make effective choices among alternative solutions.
This course is a continuation to csci101 (Intro to Computer Science),
and is a study of fundamental data structures, their design,
implementation, efficiency and effective use in solving problems.
Though the class is programming-intensive and most of the assignments
involve programming, programming is not the main focus of the
class. The class is rather about program development, from algorithms
and analysis to degugging and testing. More precisely, the class
focuses on the following broad topics:
- Basic data structures: The class will study the basic data
structures that come up in computer science. You will learn about
lists, vectors, stacks, queues, priority queues, trees and hash
- Design: You will refine your learning of how to come up with
a solution to a problem. This involves thinking abstractly about
the problem, modeling with appropriate classes and methods, thinking
about modularity and data abstraction, dividing a task into building
blocks, and identifying the appropriate data structures.
- Analysis: You will learn to analyse the efficiency of your
solution, and to use efficiency considerations to make the right
choice of data structures.
- Program development: Programming can be tedious and
brain-damaging if not approached in the right way. You will learn
about incremental development, debugging and testing.
- Programming style: Not all code that works is good. When
programming, you will learn to strive for simplicity, clarity and
As a programming language, we'll use Java for the most part. In the
last part of the semester we'll learn Python.
csci 101 at Bowdoin or in highschool
Instructor: Laura Toma
TAs: Matt Leiwant, Lizzie Mamantov, Jesus Navarro and Rob Visentin
The TA office hours will be in Searles 224.
- Laura: Mon, Tue 3-4:30pm in my office. For quick questions you can come to my office anytime.
- Sun 8-9pm [Matt]
- Mon 7-10pm [Rob 7-8, Jesus 8-10]
- Tue 8-10pm [Lizzie]
Class Email: csci210 at bowdoin
Class webpage: http://www.bowdoin.edu/~ltoma/teaching/cs210/fall11/.
All material will be available from this page throughout the
semester. This class does not have a Blackboard site.
Useful books (not required):
- Online version: Sedgewick and Wayne, Introduction to
Programming in Java, An interdisciplinary approach, Addison-Wesley
- Goodrich and Tamassia Data Structures and
Algorithms in Java, 4th edition, McGraw Hill
- Lewis and Chase, Java software structures: Designing
and using data structures, 3rd edition, Addison-Wesley.
- Al Kelley, Ira Pohl: A book on C, 4th edition, Addison-Wesley.
||Sorting and searching (linear search, binary search, insertion sort, selection sort, bubble sort).
||Algorithms analysis (big-oh, big-theta notation).
||Object-oriented (OO) concepts (inheritance, interfaces, type casting).
||Vectors and linked lists.
||Stacks and queues.
||Searching and backtracking using recursion, stacks and queues. Breadth- and depth-first search.
||Maps and hash tables.
||Trees and binary search trees.
Work for the course and grading policy:
The work for this course includes two tests, labs, in-class
assignments, readings and homeworks. The bulk of your work will be on
the lab assignments.
Approximately 50% of your grade will be based on the exams. The rest
will be based on labs and homeworks.
Lab work will be done individually or in teams of 2 people. The
lab-time is dedicated to getting started on the lab. Each lab
assignment will be due one week after it is assigned (unless otherwise
specified in class). The lab assignment must be turned in
electronically (by email), as well as a hard-copy. Endorse each
assignment with your signature to acknowledge that you have followed
the honor code for the class.
Since the major goal of the class is to learn about program
development, not handing in any lab is grounds for failing the course
(this does not assume, however, that all labs need to be completed
One of the goals of the class is to learn the difference between
programs that work, and quality programs. Therefore do not assume that
completing an assignment will result in an A. Even if the program
works and does what it's supposed to do, that does not make it an A
The assignments must be turned in at the specified time. The reason is
that it is absolutely essential that you do not fall behind in the
Furthermore, once an assignment is due, I will no longer provide help
In addition, you may not work on late assignments during class
The late penalty for an assignment is 25% per day.
Failure to hand in an assignment is grounds for failing the course. So
you are better off handing in something incomplete than not handing in
Honor code and cheating policy
Students are expected to follow the Bowdoin Computer Use Policy and
the Academic Honor Code. You are encouraged to discuss ideas and
techniques broadly with other class members, but not specifics
of assigned problems except as part of group projects. Discussions
should be limited to questions that can be asked and answered without
using any written medium (e.g. pencil and paper or email).
This means that at no time should a student read any code
written by another student unless they are part of the same group.
Sharing of code or intermediate designs is expressly prohibited. The
same rules apply once you have finished the course - sharing your
code with other students will be considered a violation of Bowdoin's
honor code. Violation of this policy is grounds for me to initiate
an action that would be filed with the Dean's office and would come
before the J Board. If you have any questions about this policy,
PLEASE do not hesitate to contact me. This will be a zero-tolerance
It is permissible to use software and materials available from
other sources (understanding that you get no credit for using the work
of others on those parts of your projects) as long as: 1) You
acknowledge explicitly which aspects of your assignment were taken
from other sources and what those sources are. 2) The materials are
freely and legally available. 3) The material was not created by a
student at Bowdoin as part of this course this year or in prior years.
All write-ups, reviews, documentation, and other written material
must be original and may not be derived from other sources.
If in the future you will provide your work to students in 210 this
will also constitute a violation of Bowdoin's honor code.