CS 216 - Data Structures
Course Information

Course Overview

The focus of this course is data structures, ways to organize data (e.g. linked lists, hash tables), and algorithms (e.g. sorting, searching), ways to process data.  Our goal is to develop your problem-solving abilities by providing a deep understanding of the data structures and algorithms computer scientists find most useful.  As you seek to solve new problems in the future, you will likely associate a new problem to similar problems in your experience.  Drawing from data structures and algorithms you've previously encountered, you'll synthesize new approaches.  Thus, it is important for you to be equipped with valuable, broadly-applicable tools for problem-solving.  This is our primary aim.  By implementing common data structures and algorithms from language-neutral specification, you will gain a broad, language-independent maturity with data structures and algorithms.

Learning Objectives


Introduction to Algorithms, Third Edition
by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein
MIT Press 2009
ISBN-10: 0262033844
ISBN-13: 978-0262033848


Todd Neller
Lecture: M,W,F, 2:10-3:00M, Glatfelter 112
Office: Glatfelter 209
Office Hours: M,W,F 11-11:50PM. Note: Generally, feel free to drop in if my office door is open (i.e., most of the time beyond class).
A Video Explainer about Office Hours for Students
Phone: 337-6643

Student Assistant/Grader: Lorin Rumberger, help hours Tuesdays, 7-9PM Glatfelter 207 (CS lounge)


70% Assignments
10% 4th Hour Requirement project
10% Quizzes / Exams
5% Colloquium Attendance
5% Class Attendance / Participation

You are responsible to know the material from each lecture and reading assignment before the start of the next class.  Homework is due at the beginning of lecture on the due date.  Late homework will not necessarily be accepted.  Code must be a legal program in the relevant language in order to be graded.  (It need not be free from logic errors.)  For compiled languages, this means that the program must compile without error.  For interpreted languages, this means it must be interpretable without error.   Source code with compilation/syntax errors may not receive partial credit.  You are required to attend 2 colloquia or approved departmental events over the course of the semester.  Class attendance and participation is required.  If you attend all classes and are willing to participate, you'll get 100% for this part of your grade.  Even if you know enough to give a particular lecture, please consider the value of helping your peers during in-class exercises.

Honor Code

Honesty, Integrity, Honor.  These are more important than anything we will teach in this class.  Students can and are encouraged to help each other understand course concepts, but all graded work must be done independently unless otherwise specified (e.g. group work).  Submitted work should be created by those submitting it.  Submission of plagiarized code or design work is a violation of the Honor Code, which I strictly enforce.  For detailed information about the Honor Code, see http://www.gettysburg.edu/about/offices/provost/advising/honor_code/index.dot.

What is permitted:

What is not permitted:

Put simply, students may discuss assignments at an abstract level (e.g. specifications, algorithm pseudocode), but must actually implement solutions independently or in permitted groups.  Credit should be given where credit is due.  Let your conscience be your guide.  Do not merely focus on the result; learn from the process.