|
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
- Understand, implement, and test fundamental data structures such as
stacks, queues, hash tables, and binary search trees.
- Derive and compare computational time and space complexities to better
understand tradeoffs in data structures selection.
- Gain skill in the implementation of language-independent pseudocode
specifications.
Text
Instructor
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
E-mail:
Student Assistant/Grader: Lorin Rumberger, help hours Tuesdays,
7-9PM Glatfelter 207 (CS lounge)
Grading
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:
- Discussing algorithms, syntax, and problem specifications with other
students
- Seeking assistance (as needed) from CS professors, students assistants,
and approved tutors
- Use of "starter code" supplied by your professor, or code you have
previously developed
What is not permitted:
- Sharing code: Verbal dictation of code, transference of code (e.g.
e-mail, file transfer, entry of printed output, etc.). An important
component of this experiential learning process is developing the ability to
independently devise algorithms and express them in program code.
- Viewing and/or using unauthorized code (e.g. solutions found online,
downloads from code repositories, etc.)
- Submitting work that implicitly takes credit for work that should be
credited to others
- Efforts to obscure the source of unauthorized work
- Outsourcing work
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.