CS 310: Data Structures

(Fall 2017)


Piazza is the central site for our announcements, documents repository, and discussion board. The announcements and discussion board are part of the required reading for the course. All instructors and TAs can view all material on Piazza. Do not e-mail course staff about programming problems; use the discussion board.

Email course staff only for logistical issues such as meeting outside of office hours, missing lecture, grading disputes, medical situations, etc. Email addresses are listed on Piazza.

BlackBoard is used for graded work submissions and to post grades.


Professor Section(s) Email
Jyh-Ming Lien 001 (M/W 12:00pm) jmlien _ AT _ cs.gmu.edu
Katherine Raven Russell 002 (M/W 1:30pm)
005 (T/R 3:00pm)
krusselc _ AT _ gmu.edu
(required subject line: [CS310])
Jitin Krishnan 003 (M/W 3:00pm) jkrishn2 _ AT _ gmu.edu

Office hour times and locations are listed for all staff on Piazza under (Resources -> Staff). No appointments are required to attend office hours: staff will be at the listed location at the given times with doors open ready to help.


Required: Mark Allen Weiss, Data Structures & Problem Solving Using Java, 4th ed., Addison-Wesley, 2010.

It is assumed that students read the scheduled sections prior to each lecture.


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 resources below.

The prerequisite for this course is C or better in CS 211. I 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. I will also assume that you are acquainted with basic complexity analysis ("big O") and are able to build abstract data types using Java classes.


Students will:

  1. Reinforce what they have learned about elementary data structures from CS 211.
  2. Extended their knowledge of data structures to more sophisticated data structures. This includes balanced binary search trees, B-trees and B+-trees, hashing, and basic graphs.
  3. Use generic types in their data structures.
  4. Do more demanding programming than they had in CS 211. All programming is done in Java. This involves more program design and debugging techniques.


This list is subject to change as interest evolves.


Graded Material Percent of Final Grade
Programming Assignments 50%
Midterm Exam 20%
Final Exam 30%


Final grades will be assigned without rounding according to the following criteria. It is a 10-point scale per letter grade, with the upper and lower 2% of each 10% earning a + or -. For example:

Letter GradeScore Required
A+98% and up
Fbelow 60%

Contesting of grades on any/all submissions must be requested within one week of the item's return. No grade changes will be considered subsequent to that deadline, or after the final exam meeting.

You will not be allowed to make-up or re-do work at the end of the semester; your grade should be a measure of your semester-long progress.


There will be one midterm exam during the regularly scheduled lecture time and one final exam at the end of the semester. Refer to the schedule for dates of the exams.

Early or Late/Makeup Exams require exceptional circumstances (as judged by me) and must be arranged in advance. Vacation plans are not exceptional circumstances.


Students will receive a number of programming projects during the semester. These 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 INDIVIDUAL work.

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.

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 the student an error, the student MUST email their submission to their GTA 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, Bitbucket, or GitHub), email the files to yourself, storing them on 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! "My disk crashed" and "my roommate ate my program" will not be acceptable reasons for a late submission.

Any code turned in that does not compile, specifically on Java 1.8 is likely to receive a zero. If the grader is able to quickly fix your code, you may get some points (but you will automatically lose 10 points PER FIX). If the grader cannot immediately spot and fix the issue, the assignment will receive a zero, no exceptions.


Each student gets three Late-One-Day tokens, which are automatically used by late submissions. Turning in 1 minute late and turning in 23 hours and 59 minutes late are treated the same (no "half" tokens). Turning in a project late without a token will result in a zero. No exceptions.

You may use up to 2 late tokens on an assignment, except the final assignment. The final assignment will not allow any late tokens due to grading time constraints at the end of the semester (you are welcome to just "pretend it is due two days early" if that helps).


In addition to attending the regular meeting times, you are strongly encouraged to visit the professor and teaching assistant(s) during office hours to further your understanding of the material: we are here to help you learn.


PRIME DIRECTIVE: Be able to explain your own work including homework code and exam solutions. The work you submit should be the product of your own effort and reflect your personal understanding. Students may be asked at any time to explain code or exam solutions they submit. Inability to do so will be construed as evidence of misconduct.

Both the University and the Computer Science Department have honor codes you are expected to adhere to. We will be reviewing these in class, but more information about the university honor code can be found here: http://oai.gmu.edu/the-mason-honor-code-2/ and the deparment's honor code can be found here: http://cs.gmu.edu/resources/honor-code/. You are bound by these honor codes.

Any submitted work which shows too much commonality with others' work to be completely original, or any plagiarized work, will result in a case for the Honors Committee. Any code which is presented in class or provided to you as part of the project may be included in your programs.

General discussion of the project (e.g. what is the project? what does X mean in the project description? etc.) is encouraged. However, programming projects are considered individual efforts, therefore no sharing of code and/or project solutions will be allowed with anyone except the TAs or the professors. Student projects will be manually and automatically assessed for cheating. You may not look at or otherwise view any other individual's code, pseudocode, or algorithms.

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 your code.



If you have a learning or physical difference that may affect your academic work, you will need to furnish appropriate documentation to the Disability Resource Center. If you qualify for accommodation, the DRC staff will give you a form detailing appropriate accommodations for your instructor.

In addition to providing your professors with the appropriate form, please take the initiative to discuss accommodation with them at the beginning of the semester and as needed during the term. Because of the range of learning differences, faculty members need to learn from you the most effective ways to assist you. If you have contacted the Disability Resource Center and are waiting to hear from a counselor, please tell me.