CS310: Data Structures (Spring 2021)
1. Course Basics
1.1 Prerequisites (click to expand)
C or better in CS211 and MATH 113.
1.2 Professor Information (click to expand)
ENGR 4508 - Due to COVID-19, all office hours are online.
K. Raven Russell
ENGR 5328 - Due to COVID-19, all office hours are online.
1.3 Textbook (click to expand)
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 (click to expand)
You will regularly use either Blackboard Collaborate
(https://mymason.gmu.edu) or Zoom (https://zoom.us/)
for your class meetings.
You are required to have regular, reliable access to a computer
with an updated operating system (recommended: Windows 10 or Mac
OSX 10.13 or higher) and a stable broadband Internet connection
(cable modem, DSL, satellite broadband, etc., with a consistent
1.5 Mbps [megabits per second] download speed or higher.
You are required to have a device with a functional camera and microphone. Phone connections will not be available this semester.
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(click to expand)
Course schedule, announcements, lecture slides, assignments,
discussion, GTA/UTA contacts, and most other material of this sort
will be on Piazza. Sign up yourself by following this link:
https://piazza.com/gmu/spring2021/cs310 and using access code "banana".
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 (click to expand)
Projects assignments will be submitted (per published deadlines) via Blackboard.
If Blackboard Collaborate is being used, the links will appear on Blackboard.
1.7 Office Hours (click to expand)
Office hours are listed for all staff on Piazza under (Resources/Staff).
Office hours will be completely online this semester. Because of this,
we will not be able to help with individual code questions in office
hours to accommodate all students. Help with individual code issues
will be reserved for Piazza discussion.
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.
Since office hours will be completely online this semester, please 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 when they
are crowded. You should plan ahead, and use the discussion board for
posting general questions.
2. Course Description
2.1 Course Topics (click to expand)
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.2 Course Outcomes (click to expand)
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.
* Weighted average on projects (as described above) must be must be at least a 60% to pass CS310. This can be calculated using the following formula: ((averageScoreHighest4Projects * 50) + (lowestScoringProject * 5)) / 55
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 (click to expand)
Students will receive a number of programming projects during the
semester (this semester, five). 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 worth the same amount of
points. However, your four highest grades will count for 50% of your
semester grade (12.5% each) and your lowest grade will be used for the
remaining (5%). 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".
You will not receive credit for any project until you pass this project,
but there will be infinite resubmissions for Project 0 (until some specified date, usually in the middle of the semester). If at the specified date you still have not passed Project 0, your current (and future) project grades will be replaced with a 0s. The weighted average on projects must be above the threshold of 60% to pass CS310 (formula given above).
3.2.1 Submissions (click to expand)
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.
3.2.2 Deadlines (click to expand)
Projects can be turned in at most 48 hours late, no
Late submission policy (up to 48 hours) is as follows:
Submitting a project after the deadline lowers the maximum
score by a certain percentage (not quite the same as a % penalty).
Max score 100/100 if <=12 hours late This is in place to handle ANY AND ALL technical issues submitted assignments due to the online structure of the class.
Max score 90/100 if > 12 hours && <=24 hours late.
Max score 75/100 if > 24 hours && <=48 hours late.
Max score 0/100 if > 48 hours late.
One minute late is the same as many hours late. No sympathy for "just a few minutes".
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 (click to expand)
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
3.3 Participation, Textbook Reading, and Lecture Quizzes (click to expand)
5% of semester total is based on participation activities
determined by individual instructors. This semester, all
sections will have "weekly textbook and lecture
quizzes" due on Fridays for this grade. These quizzes may
be multiple times before the due date (this semester 10x).
There MAY be up to 1% of the total semester available
in extra credit from these activities. This semester, all sections
will use class attendance for this credit (the lowest
1-2 scores will likely be dropped to allow for emergencies).
Attendance on online lectures will be logged and participation will by determined by individual instructors.
3.4 Tests and Exams (click to expand)
All tests and exams 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. Resources available during exams will be specified by
the instructor on a exam-by-exam basis. Student exams will be manually and automatically assessed for cheating.
All students must have their GMU identification available on
testing days (and will be required to show a photo ID as part
of the exam process).
Unless specified all exams are cumulative (including the final exam).
There are no make-up tests. The drop policy is in place for this.
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 provide
approved documentation to your instructor. Failure to follow these
policies will result in a zero. We may elect to replace a missed
test with some (or all) of the final exam grade, or an average
grade for the other tests, 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 (click to expand)
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 (click to expand)
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.
Some kinds of participation in online study sites violate the
Mason Honor code: these include accessing exam or quiz questions
for this class; accessing exam, quiz, or assignment answers for
this class; uploading of any of the instructor’s materials or
exams; and uploading any of your own answers or finished work.
Always consult your syllabus and your professor before using
5. University and Departmental Policies
5.1 Privacy (click to expand)
All course materials posted to Blackboard or other course site
are private; by federal law, any materials that identify specific
students (via their name, voice, or image) must not be shared
with anyone not enrolled in this class.
Videorecordings of class meetings that include audio or visual
information from other students are private and must not be shared.
Live Video Conference Meetings (e.g. Collaborate or Zoom) that
include audio or visual information from other students must be
viewed privately and not shared with others in your household.
5.2 Non-Discrimination and Inclusiveness (click to expand)
We are committed to providing an educational environment free from any discrimination
on the basis of race, color, religion, national origin, sex, disability,
veteran status, sexual orientation, gender identity, gender expression,
age, marital status, pregnancy status, or genetic information. If you
feel there has been a violation of the University's policies on this,
please contact GMU's Office of Compliance, Diversity, and Ethics
Gender identity and pronoun use: If you wish, please share your name and gender
pronouns with us and we will attempt use them to address you in class and via email.
You can address any professor as "Prof. [LAST NAME]" in email and verbally if you
aren't sure of their personal preferences.
5.3 Sexual Harassment, Sexual Misconduct, and Interpersonal Violence (click to expand)
All faculty members are designated "Responsible Employees", and are required
to report all disclosures of sexual assault, interpersonal violence, and
stalking to Mason’s Title IX Coordinator per university policy 1412.
If you wish to speak with someone confidentially, please contact the Student
Support and Advocacy Center (703-380-1434) or Counseling and Psychological
Services (703-993-2380). You may also seek assistance from Mason’s Title IX
Coordinator (703-993-8730; firstname.lastname@example.org).
6. Campus Resources
6.1 Disability Services (click to expand)
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.