Homework

Homework will be assigned once every 2-3 weeks. It will be graded, and require substantial work. The average student should expect to spend over 15 hours per homework. Homeworks will typically contain a mix of programming exercises and “theory” questions about data structures and their implementation.

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

Please read the submission instructions and policies below carefully! Failure to follow the process (of pushing the appropriate files to Github and submitting your git commit SHA on our website) will result in a 0 on the assignment.

Schedule

# Written Programming Title Written Due Programming Due Submit Regrade
1 Written Programming Linked Lists, Runtime, and Recursion Friday, Sep 6 at 11:59PM PST Friday, Sep 13 at 11:59PM Pacific Submit Regrade
2 Written Programming Inheritance, Polymorphism, and Class Design Friday, Sep 20 at 11:59PM PST Friday, Sep 27 at 11:59PM PST Submit Regrade
3 Written Programming Heaps, Backtracking, and Counting Monday, Oct 14 at 11:59PM PST Friday, Oct 18 at 11:59PM PST Submit Regrade
4 Written Programming Probability and Number Theory Friday, Oct 25 at 11:59PM PST Friday, Nov 1 at 11:59PM Pacific Submit Regrade
5 Written Programming Amortized Analysis and Hash Tables Friday, Nov 15 at 11:59PM PST Friday, Nov 22 at 11:59PM Pacific Submit Regrade
6 Written Programming AVL Trees Friday, Dec 6 at 11:59PM Pacific Submit Regrade

Editors, Debuggers, and Git Help

Checkout our Tools and Links page

Submission

In order to properly submit your assignment, please follow the course submission instructions which will show you the steps to submit a particular git commit of your code.

For each assignment, a precise time will be specified on the due date (usually at 11:59 PM PST). The programming submission must be made correctly via your github account and your git commit SHA must be submitted on the appropriate submission page using the process described on the submission instructions page. Read and follow those instructions carefully for each homework. Failure to do so may lead to a 0 on the assignment even though you may have had all the code working on your machine. Much of software development requires following strict processes, so it is important you start to understand and follow those processes.

Important Note: You will NOT receive an exception for failing to follow these instructions!

For example, often times students forget to commit/push a file that is part of their solution to Github. If they had followed the submission instructions and re-cloned their repo to a temporary folder and attempted to build their assignment code, they would have easily found the issue. We cannot accept files that were not submitted or files where you submitted “the wrong version”. We can only grade what you submitted.

In addition to making sure your submission is on time, please make sure that the code you submit is formatted and works as expected with g++. We will grade your assignments using 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 Docker container or virtual machine.

You WILL lose points for submitting unreadable code, or for failing to follow submission instructions. Be sure to refer to our Visual Inspection Rubric before submitting.

Policies

There will be 6 assignments. In CS 104 we do not accept late submissions (except in the cases outlined below). We do realize that as a student, things will come up and other classes may need more focus on certain weeks. While 2 weeks per assignment should allow you to finish on time if you start early and work consistently, we will provide 5 grace days to be used over the semester with a maximum of 2 grace days allowed per assignment. The use of a grace day extends your due date by 24 hours. 48 hours after the due date, no submissions will be allowed. Once you have used your grace days, any late submission will not be accepted for any reason; 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.

Extensions: Save your grace days for extreme situations. Only emergencies cleared through campus support services or student accessibility services will be granted extensions. Similarly, while we appreciate the mental health needs of our students, extensions will generally not be granted without campus support direction. The best strategy to reduce stress and give yourself the best chance of success, you should start your assignments on the DAY THEY ARE RELEASED and working at an even pace throughout the duration. By leaving the work for just a few days before the due date, you will increase your stress levels! With that said, if an unexpected emergency does occur, you may fill out this form and make a private note on Piazza to inform the course staff. Again, start early anticipating that things may come up closer to the deadline. If you have not started early and something comes up, you may be denied since you chose to leave your work until the deadline. Commit and push your intermediate work often as a record of your effort on an assignment.

The most consistent advice from students who have done well in CS 104 is (you guessed it): start early!

HW Grades and Regrades

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 a few days of the exam date.

Homework grades will normally be posted back as ISSUES on your hw-username Github repository and their release will be announced on Piazza. If you have not received your score (no issue was posted to your repo webpage) 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 (unless specifically noted) of the score posting. Then follow the process below for the type of regrade you are requesting.

Fill out this HW regrade form within 7 days of grades being released. The TAs will review the request. If they can deal with it themselves, then they will do so and email you the result. If they cannot address it or you don’t hear from them, please attend the special HW regrade office hours that the TAs will announce on Piazza for each homework. Again you must submit your regrade request within 7 days and after 7 days no regrade requests will be considered for any reason, even if it is our grading mistake. Be prompt and do not delay reviewing your HW grades. [Note: The regrades don’t have to be resolved within 7 days, though hopefully they will; we just need you to raise the issue on the regrade form within 7 days].

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. Finally, please note that regrades are not for “fixing” your code. For example: If there was just one line off that caused all the tests to fail, that might be a viable reason for a regrade but we have a standard policy over the years that each expression change on a regrade is a -10 deduction, because it was really your responsibility (especially if the test suite was released before submission) to ensure your code compiled, tested, and all files were submitted on Github which can be verified by the “Verification” process outlined at the end of each homework.

Exam Regrades

You will submit your regrade through Gradescope. Your entire exam will be regraded, which may cause scores to go up or down.

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.

Collaboration: Your homework assignments and exams should be individual efforts unless explictly stated otherwise. While collaboration and online searches are common in the workplace, taking code from those sources is usually not allowed due to licensing and can have legal ramifications. Similarly, while collaboration in a company is common, we are training you to be capable computer scientists and, thus, you need to develop the skills for yourself. You will have higher levels of collaboration for team-based projects in future courses and in the workplace. For homework assignments, you may only have CONCEPTUAL discussions with classmates. Any discussion that includes specific code (describing variables, loops, functions, etc.) and implementation details is an inappropriate level of collaboration and a violation of academic integrity. Copying (and then modification) or just “viewing for reference” any (even small) portion(s) of code from Internet sources or fellow students is prohibited unless explicitly cleared with the instructor. Simiarly, ANY use of chatGPT or similar AI-generators to generate ANY amount of code is a violation. Similarly you should NOT verbally describe your code at any level of detail. Instead, draw (non-code) pictures, ask questions that consider possible inputs or other scenarios, or provide advice on how to debug.

If you are suspected of violating the academic integrity code of conduct the process will be as outlined at the Office of Academic Integrity:

The official language on academic integrity is on the syllabus, but what is written below acts as an additional, binding policy for this course:

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:

Acceptable Actions

Unacceptable Actions (Violations of Academic Integriy)

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.

We run code similarity tools on all homework submissions to catch inappropriate collaboration and plagiarism. If there is suspected cheating, you will be reported to the OAI, 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: