CSCI 104 - Fall 2019 Data Structures and Design

Homeworks

Homework will be assigned roughly once every 2 weeks. It will be graded, and require substantial work. The average student should expect to spend more than 20 hours per homework. Homework will typically contain a mix of programming exercises and "theory" questions about data structures and their implementation. 2 assignments will contain pieces that contribute toward a class project; the different parts of the project will build on each other. As the project progresses, students may find it necessary to revisit and improve their earlier solution, so good coding practices and documentation are strongly encouraged.

Each student will receive a private code repository on the course's GitHub Organization to use for the development and submission of all assignments. You will be using the git source code management tool to maintain your homework code.

Invariably we may not cover all the questions or concerns you may have for handling certain cases. For each assignment, we will maintain a Frequently Asked Questions (FAQ) page. Updated requirements or clarifications will be added to these FAQ pages. Please check the appropriate page before submitting your HW.

HW Schedule

HW Topic Due Date Submit
HW01 Course Overview and 103 review Fri. Sep. 13, 2019 @ 11:59PM (PST) Submit
HW02 Project, Part 1 Fri. Sep. 27, 2019 @ 11:59PM (PST) Submit
HW03 Linked Lists, Queues, and Stacks Fri. Oct. 18, 2019 @ 11:59PM (PST) Submit
HW04 Project, Part 2 Fri. Nov. 1, 2019 @ 11:59PM (PST) Submit
HW05 Graph Search Fri. Nov. 22, 2019 @ 11:59PM (PST) Submit
HW06 AVL Trees Fri. Dec. 6, 2019 @ 11:59PM (PST) Submit

Editor, Debuggers, and Git Help

Checkout our Tools and Links page

Submission Instructions

In order to properly submit your assignment, please follow the course submission instructions.

Homework Policies

For each assignment, a precise time will be specified (usually at 11:59 p.m.) on the due date. Submission must be made correctly via your github account and your SHA must be submitted on the appropriate bytes.usc.edu submission page. All student have 4 grace days they can use over the course of the semester. A maximum of 2 grace days can be used on a single assignment. Once you have used your grace days, any late submission will not be accepted; thus, it will be graded as a 0. Our online submission system will automatically deduct and track late days, so you do NOT need to alert anyone.

Grade Disputes

We will work hard to post HW scores and feedback within 2 weeks of the homework's due date. Exams will typically be graded within at most a few days of the exam date. If you have not received your score on a particular HW even though most other students in the class have (say, 24 hours after the score release date), post a private note on Piazza and someone will then follow up with your grader.

Any disputes with posted grades must be raised within 7 days of the score posting. Then follow the process below for the type of regrade you are requesting.

HW Regrades

Fill out this HW regrade form and wait for someone to be in touch with you. If you do no hear from someone within a few days, post a private note on Piazza listing the issue. Notice that any regrade request will result in us trying to give the fairest possible grade to you, which could be higher or lower than the one you received originally.

Exam Regrades

Submit your paper exam to your instructor with the regrade request written on the cover sheet. Notice that any regrade request will result in us trying to give the fairest possible grade to you, which could be higher or lower than the one you received originally.

Homework Grading Policies

For each assignment, a precise time will be specified (11:59 p.m.) on the due date. Submission must be made correctly via your github account and our submission webpage where you enter your full SHA of the commit you want us to grade. After you believe you have submitted, you should click the Check My Submission button to ensure it is submitted properly.

Grading Environment

We will grade your assignments using gcc/g++ at the command line in the virtual machine we provide for the course. You are free to use other compilers or IDEs to develop your code, but in the end, it has to work with g++ on the course virtual machine provided.

Assignment Rubric

Each homework assignment generally asks for a set of features to be implemented in C++. It also usually asks students to specifically either use or not use some STL classes. Based on these requirements, each assignment is going to have its own grading rubric. We also have a general rubric which you need to consider for all assignments; this captures issues that will be common to most of your assignments, like quality of your code.

This is meant as a general guideline for you to understand how we grade homework, and what things you need to watch out for to avoid losing points. The actual deduction can vary from question to question depending on the nature of the problem. For example, if a homework problem is meant to test your understanding of pointers, memory leak will be worth more points.

General Rubric

Submission Deductions in this category are per homework; they are capped so that you do not get below a score of 0 on any homework, though 0 is possible.

Multiple choice problems

Coding Problems

Deductions for coding problems are by question; they are capped so that you do not get a score below zero on any question, though 0 is possible.

Test Cases:

Code Review:

Academic Integrity

We take academic integrity very seriously in our CS courses to ensure that your grades reflect your mastery of the material presented in this class as well as to provide fairness to fellow students, to ensure the reputation of USC, and the expectations of our constituencies are met.

Your homework assignments, quizzes, and exams should be individual efforts unless explictly stated otherwise. For homework assignments, you may only have high level discussions with classmates. Any discussion that includes specific code and implementation details is an inappropriate level of collaboration. We run all submissions through code similarity tools that compares every student to every other student from this semester and past semesters. If you are suspected of violating the academic integrity code of conduct you will:

  1. Be reported to SJACS which will acts as an impartial 3rd party to determine if a violation has occurred.
  2. If a violation is deemed to have occurred, the recommended sanction is a 0 on the assignment and 1 letter grade deduction (i.e. if you would have gotten a B+ you would receive a C+).
  3. If SJACS determines this is not your first violation, they may initiate a review that could lead to suspension from the school.

The official language on academic integrity is on the syllabus.

Collaboration is important in an academic environment. We want to be sure that you are aware of what is appropriate collaboration and conduct and what may be considered a violation of academic conduct rules. Here are examples to consider:

In summary, any time that you are trying to get higher grades for work that you did not earn is not acceptable. Any behavior by which you are attempting to receive or grant an unfair advantage that your classmates who are following the rules do not have is not acceptable. Please act with the integrity that is expected of USC Trojans.

If there is suspected cheating, you will be reported to SJACS, no exceptions. Follow the above guidelines to make sure this doesn't happen to you.

In order to make sure that an appropriate level of collaboration is used between you and your classmates, please do not keep notes, pictures, or any records from your discussions. This will ensure that your work reflects only your understanding when you create it. Please do not sit coding next to each other while discussing the work. If you are concerned that an inappropriate level of collaboration has occured, please do the following: