CS310: Data Structures (Spring 2020)
Sections: 001, 003, 004, 005 (NOT 006)
1. Course Basics
C or better in CS211 and MATH 113.
1.2 Professor Information
|K. Raven Russell
||ENGR 5309 (during office hours only)
Mark Allen Weiss, Data Structures & Problem Solving
Using Java, 4th ed., Addison-Wesley, 2010. Errata
It is assumed that students read the scheduled sections
prior to each lecture.
1.4 Software & Programming Requirements
You will need a computer for this class with some modern
operating system capable of running a Java compiler. Remember
that lab computers are also available on campus, see campus
The prerequisite for this course is C or better in CS 211. We
will assume that you have developed a significant degree of
skill in programming (program organization, coding, documenting,
testing and debugging) -- you will develop yet more this
semester. We will also assume that you are acquainted with basic
complexity analysis ("big O") and are able to build abstract
data types using Java classes.
1.5 Discussion Board: Piazza
Course schedule, announcements, lecture slides, assignments,
discussion. GTA/UTA contacts and office hours will be on Piazza
too. Sign up yourself by following this link:
The discussion board on Piazza is required reading for all
projects. You MUST read the discussion board for
clarifications and project updates.
All instructors and TAs can view all material on Piazza.
No sharing answers or code solutions to assignments on the
discussion board. You can include code in private posts to the
instructors (visible to all professors, GTAs, and UTAs). See
Honor code section below for more details.
Email course staff only for logistical issues such as meeting
outside of office hours, missing lab/lecture, grading disputes,
medical situations, etc. Email addresses are listed on Piazza.
Do not e-mail course staff about programming problems; use the
1.6 Grades and Project Submissions: Blackboard
Grades will be posted to Blackboard.
Projects assignments will be submitted (per published
deadlines) via Blackboard.
1.7 Office Hours
Office hours are listed for all staff on Piazza under
Students must make significant, individual effort on all
projects before coming to see a GTA/professor. Waiting until the
last minute, in the expectations that the entire project will be
explained in one office hours session, is not feasible.
Office hours are often crowded - do not rely on them for last
minute help, as we cannot guarantee that we will be able to
spend significant time with every student. You can also use the
discussion board for posting questions.
2. Course Description
2.2 Course Topics
CS 310 continues the study of data structures from CS 211.
Students will learn how to approach larger and more challenging
programming problems than the projects in CS 211. Programming is a
significant part of this course and students should expect to
spend a good deal of time on the programming projects. The course
also introduces a variety of data structures and illustrates the
types of problems for which they are useful.
Tentative topics to be covered include:
- Lists, Stacks, and Queues
- Hash Tables and Hashing
- Trees and Basic Tree Algorithms
- Graphs and Basic Graph Algorithms
See the schedule available on Piazza (under Resources) for a
more detailed topics list.
2.3 Course Outcomes
In CS310, students will:
Gain an ability to analyze the runtime efficiency of
algorithms that create and manipulate data structures.
Gain an ability to compare data structure trade-offs
such that the student is able to choose appropriate
implementations for a given data structure and appropriate
data structures for a given application.
Reinforce their knowledge of basic data structures
(linked lists, dynamic array lists, stacks, and queues)
and extend their knowledge to more sophisticated data
structures, including hash tables, balanced trees,
priority queues, and basic graphs.
Implement and use learned data structures to solve real
computing problems. This includes substantial reinforcement
of language-specific techniques for abstract data types
and design and debugging techniques.
The following will be applied without rounding:
A+ (>= 98.0%) A (>= 92.0%) A– (>= 90.0%)
B+ (>= 88.0%) B (>= 82.0%) B– (>= 80.0%)
C+ (>= 78.0%) C (>= 72.0%) C– (>= 70.0%)
D (>= 60.0%)
F (< 60.0%)
Small amounts of extra credit may be offered throughout
the semester, but there will be no make-up or extra-credit
assignments at the end of the semester; your grade should
be a measure of your semester-long progress.
3.2 Programming Assignments
Students will receive a number of programming projects during the
semester (typically four). These programming projects will be a
primary focus of your grade - each one should take multiple sessions
of coding, with questions asked in between. Don't be surprised if
you're spending 20+ hours on each one. Programming projects are
All projects numbered above 0 will be averaged together evenly.
If there is a Project 0 (some professors/semesters have this), it
will not be part of the calculation, but instead act as a "flag".
If you do not pass Project 0 you will not receive credit for any project
until you do (infinite resubmissions for Project 0 will be allowed).
If at the time of the final exam you still have not passed Project 0,
your project grades will be replaced with a 0s.
All projects are to be submitted to Blackboard. You can
submit your work an unlimited number of times to BlackBoard,
and by default only the last version will be graded.
Turning in the wrong files will likely result in a zero. You
can and should download your submitted attempts to verify that
you turned in a working copy.
If you turn in the wrong files, the ONLY way you MIGHT receive
credit is by showing your professor a backup where the modified
date on the files is outside of your control. Modified
dates on personal computers and/or public computers are NEVER
accepted as proof of work. Backups which WILL ALWAYS be considered
are: prior submissions to Blackboard or emails to your Professor/GTA.
Backups which MIGHT be accepted include: emails from your GMU email
to yourself, uploading to certain backup services (such as
GoogleDrive or a private GitHub repo), and uploads to the discussion
Broken Code == Bad Scores. Any code turned in that
does not compile, specifically on Java 1.8 will receive a zero.
If the grader is able to quickly fix your code, you might get
some points back, and you'll be fortunate to get any at all.
Projects can be turned in at most 24 hours late, no
Submitting a project after the deadline lowers the maximum
score by 25% (not quite the same as a 25% penalty). One minute
late is the same as 23 hours and 59 minutes late.
Each student gets 2 "Emergency" tokens, which
are automatically used by late submissions to avoid
the 25% penalty; you still must turn in work within 24 hours
of the original deadline, even if you use tokens!
Unused emergency-tokens will be worth 0.25% bonus to a student's
overall grade at the semester's end.
Blackboard being unavailable is not an excuse for turning in
a late assignment; in the rare situation that the website is
somehow unavailable or giving an error, you MUST email your
submission to your GTA (and CC your professor) before the
deadline, otherwise it will be considered late.
Catastrophic computer failure will not be cause for an
extension. Use a backup service such as DropBox (or any cloud
service), emailing yourself, storing to a USB drive, whatever
it takes. Every semester multiple students' computers die, are
stolen, or otherwise 'lose' projects. Don't be the student who
forgot to (frequently) back up your work!
3.2.3 Honor Code and Projects
Programming projects are considered individual
efforts, therefore no sharing of code and/or discussion of
problem solutions are allowed with anyone except the TAs or
the professor. Student projects will be manually and
automatically assessed for cheating.
You may not use any Internet resources to create code or
algorithms, besides the textbooks, the slides, and Piazza,
unless otherwise specified. However, you are free to look up
the syntax errors your encounter online, to gain an
understanding of what the syntax error means. The projects
we're doing this semester can be directly solved using
techniques discussed in class, and no outside material is
needed unless otherwise noted.
It is your responsibility to lock your computers with
a password, to not post your code to websites like Pastebin
that are publicly accessible, to guard your USB drives and
computers, to not upload your files to someone else's
computer, etc. You will be liable for any access gained to
5% of semester total is based on participation activities
determined by individual instructors.
There MAY be up to 1% of the total semester available
in extra credit from these activities.
Exams are closed book/notes unless specified otherwise by
instructor. They will be entirely paper and pencil - no
All students must have their GMU identification available on
The final exam is cumulative.
Early or Late/Makeup Exams require exceptional circumstances
(as judged by the instructors) and must be arranged in advance. Vacation
plans are not exceptional circumstances.
If you miss an exam due to a university-accepted excused
absence (such as an illness or car accident the day and time of
the exam), you must notify your professor within 24 hours of
your absence to make arrangements for a makeup, and bring
approved documentation with you when you take the make-up exam.
Failure to follow these policies will result in a zero. We may
elect to replace a missed midterm with some (or all) of the final
exam grade rather than offering a makeup exam under these circumstances.
Missing an exam due for any non-university-accepted reason (such as
not paying attention to when the exam is), will result in a zero.
3.5 Contesting Grades
If you feel points have been incorrectly deducted, contact the
grader. For projects, that is your GTA. For exams, that is your
Contesting of grades on any/all submissions must be requested
within one week of receiving the grade (on BlackBoard). No grade
changes will be considered subsequent to that deadline or
subsequent to the final exam (whichever comes first).
4. Honor Code
All students are expected to abide by the GMU Honor Code.
This policy is rigorously enforced. Cheating will be prosecuted
and result in a notification of the Honor Committee as outlined
in the GMU Honor Code. Sharing,
collaboration, or looking at any code or algorithm for the
programming projects that is not your own, including resources
from Internet, is considered cheating.
The computer science department has an CS Honor Code
Policies that you are subject to particularly for our
course. The document helps you to understand how GMU honor code
applies to programming and CS, what constitutes cheating in the
CS setting. It clarifies some scenarios that are unique to our
sorts of assignments. Make sure you read and familiarize
yourself with these rules.
We take the honor code quite seriously. Any attempts at
copying or sharing code, algorithms, or other violations of the
honor code simply will not be tolerated. We use automated
software to flag suspicious cases, and then review them to find
the cases that must be submitted to the Office of Academic
Integrity. The penalty for cheating will always be far worse
than a zero grade, to ensure it's not worth taking the chance. Confirmed
cases of cheating almost always translate into course failure.
5. Campus Resources
5.1 Disability Services
Due to the size of the class, individual professors and graders cannot
support students with injuries or disabilities on an ad-hoc basis.
We ask that all accommodations for such conditions be arranged through
GMU's Office of Disability Services.
Students with a physical or learning disability which is already
documented with the Office of Disability
Services) should speak with the professor ASAP to discuss
their approved accommodations. Even if you don't know whether you plan
on utilizing the accommodations for any assignment/test, you need to
make sure you and your professor are working together from the beginning
of the semester to ensure your success in the class.
Students with a physical or learning disability who have not yet registered
with the Office of Disability Services
should register with that office as soon as possible. Even if you don't
know whether you'll need to utilize the accommodations, it's in your
best interest to prepare ahead of time and get your condition documented
as accommodations are not retroactive. They have a quick and easy registration
process. All you need is documentation for your condition.
The Office of Disability Services
also handles services for many temporary disabilities (for example,
if you break your arm, they can arrange note taking services).
Please contact them if you discover any sudden impairment that affects
your ability to function in class and/or on your projects. They have
a quick and easy registration process. All you need is documentation
for your condition.
5.2 Other Campus Resources