CS310: Data Structures (Spring 2018)
All Sections (001/002/003/004)
1. Course Basics
1.1 Prerequisite:
C or better in CS211 and MATH 113.
1.2 Meeting Time and Location:
- Section 001: TR 12noon-1:15pm, Merten Hall 1200
- Section 002: MW 12noon-1:15pm, Lecture Hall 3
- Section 003: MW 3-4:15pm, Lecture Hall 2
- Section 004: TR 3-4:15pm, Innovation Hall 204
Professor |
Email |
Office |
Section |
Jitin Krishnan |
jkrishn2 |
ENGR 5321
|
003 |
Yutao Zhong |
yzhong |
ENGR 4433 |
001/002/004 |
1.3 Textbook:
- 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
resources below.
- 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. 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.
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: http:piazza.com/gmu/spring2018/cs310
- 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
discussion board. Project help questions sent via email are
of extremely low priority, as they were sent to the wrong
place.
- 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
(Resources/Staff).
- 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:
- Generics and Collections
- Basic Complexity Analysis
- Linked Lists
- Stacks and Queues
- Simple and Balanced Binary Search Trees
- B-Trees and File Organization
- Hash Tables
- Graphs and Basic Graph Algorithms
2.2 Course Outcomes:
By the end of the semester, a passing student will be
able to carry out the following types of activities:
- Reinforce what they have learned about elementary data
structures from CS 211.
- 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.
- Use generic types in their data structures.
- Do more demanding programming than they had in CS 211. All
programming is done in Java. This involves more program design
and debugging techniques.
3. Grading
3.1 Assessment
Category |
Percent |
Programming Assignments |
42% |
Class Participation
|
3%
|
Midterm Exam |
25% |
Final Exam |
30% |
- 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%)
- 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. 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. All project grades will be
averaged together evenly. Programming projects are INDIVIDUAL
work.
-
Submission
- 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.
- Broken Code == Bad Scores. 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 might get some points back. If the grader cannot
immediately spot and fix the issue, you'll be fortunate to get
any points at all.
-
Deadline
- Projects can be turned in at most 48 hours late, no
exceptions.
- Each 24-hour period entered after the deadline lowers the
maximum score by 25% (not quite the same as a 25%
penalty).
- Each student gets three One-Late-Day tokens, which
are automatically used by late submissions to avoid the 25%
penalty; you still must turn in work within 48 hours of the
original deadline, even if you use tokens! (note that you
can't use three tokens on a single project)
- The last project might not be allowed to be turned in late,
to facilitate end-of-semester grading.
- Unused late-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 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 (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!
-
Honor code
- 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
your code.
3.4 In-class participation: Pytania
- This is a clicker-alternative required for class
participation. Use your GMU email address
to sign up to your specific section.
Sign up here: http://pytania.cs.gmu.edu/
- Note that attempting to answer questions from home is not
permitted. Any or all of your class participation score may be
forfeited if we catch you doing so.
- 3% of semester total based on Pytania participation; up to 1% extra credit based on correctness.
3.5 Exams
- Exams are closed book/notes unless specified otherwise by
instructor. They will be entirely paper and pencil - no
computers.
- All students must have their GMU identification available on
testing days.
- The final exam is cumulative.
- Early or Late/Makeup Exams require exceptional circumstances
(as judged by me) 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 either of these policies will result in a
zero. We may also elect to allow the final exam to count the
extra amount to give you a sort of do-over.
3.6 Contested Grades
- If you feel points have been incorrectly deducted, contact the
grader. For projects, that is your GTA. For exams, that is your
professor.
- 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.
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. Learning Disabilities
Students with a learning disability or other condition (documented
with GMU's Office of Disability
Services) that may impact academic performance should speak
with the professor ASAP to discuss appropriate accommodations. Even
if you don't know whether you plan on utilizing the accommodations
for any assignment/test, it's in your best interest to prepare and
get documented ahead of time.
6. Campus Resources