Homework

Homework will be assigned once every 2 weeks. It will be graded, and require substantial work. The average student should expect to spend about 15-20 hours per homework. Homework assignments will typically be split into two components: a written component and a coding component. Note: These components are submitted separately and have different late policies.

Each student will be responsible for use Github Classroom to generate a git repository for their coding work and also for submission. You will be using the git source code management tool to maintain your homework code.

Schedule

Note: All deadlines are 11:59 pm Pacific on the indicated date.

# Link Title Due (Written) Due (Coding)
1 Linked Lists and Recursion Fri., Jan 23rd Fri., Jan 30th
2 Inheritance, Polymorphism, and STL Fri., Feb 6th Fri., Feb 20th
3 Heaps None Fri., Mar 6th
4 AVL Trees Fri., Mar 13th Fri., Mar 27th
5 Backtracking and Recursion None Fri., Apr 10th
6 Counting, Probability, and Hash tables Fri., Apr 17th Fri., May 1st

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 Git repo 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. You are free to use other compilers or IDEs to develop your code, but in the end, it has to work with g++ on our recommended coding environment (Google Cloud Shell).

Policies

There will be 6 assignments. In CSCI 104L we do not accept late submissions (except as outlined below). Late days apply only to the coding portion of the assignments. The written portions must be completed on-time by uploading your written answers to Gradescope before the deadline.

HW Grades and Regrades

We will work hard to post HW scores and feedback within 1 week of the homework’s due date. Only the written portion of the homework is graded by a human. The score for the programming portion is determined by a grading script and is not avilable for regrading.

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.

For assessments on Gradescope (Written Homeworks), you MUST use the Regrade Request feature to make your request (no emails or EdStem posts will be accepted).

For coding assessments, post a private note on EdStem detailing why you believe the assignment was factually graded wrong (or the wrong rubric item was applied).

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 seem like a viable reason for a regrade, but with the automated tests provided, you will know that your code fails when you submit. It is your responsibility 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

Exam regrade requests must be made through the Gradescope regrade facility. Exam regrade requests must be submitted within 7 days of when the exam scores are posted. After that, your exam grade is final.

Academic Integrity

To ensure that your grades reflect your mastery of the material presented in this class, to ensure the reputation of USC, and the expectations of our constituencies are met, we expect you to adhere to the USC Viterbi honor code and avoid any academic integrity policy violations.

Use of (Generative) Artificial Intelligence and Academic Integrity. Only by spending significant time working and struggling with the assignments yourself or with course staff will you gain the skills needed to excel on exams. While use of (generative) AI is not strictly prohibited on coding and written assignments, it is STRONGLY DISCOURAGED! Even if you write significant code on your own, as soon as you ask AI to generate an outline of how to approach the code or help debug some code you’ve written, etc. you have ALREADY lost valuable learning experience, much less if you start by asking AI to write significant portions of code for you. Only through failure and the ensuing struggle will you develop the mental skills and recall needed to perform well on the exams.

Significant, obvious copying of code or written work from other students or other sources IS prohibited and may be referred to the Office of Academic Integrity and a sanction applied.

Violations of this policy will likely result in an F in the course. If you are suspected of violating the academic integrity code of conduct the process will be as outlined at the Office of Academic Integrity:

  1. If the violation minor (i.e limited to one assignment and not an exam) the instructor will opt for the FSR process.
  2. Through the FSR process the instructor will propose a penalty and if the student accepts reponsibility, the case will close after the FSR agreement is submitted to OAI.
  3. If the violation is major (i.e on an exam), or the student does not accept responsibility, the instructor will submit the case to OAI for the AR process.
  4. The OAI will acts as an impartial 3rd party to determine if a violation has occurred.
  5. If a violation is deemed to have occurred, the OAI will recommend a sanction.
  6. If OAI 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, but what is written below acts as an additional, binding policy for this course:

To help you determine what is appropriate for learning and the best possible grade outcome, here are some suggestions for collaboration and getting help:

Acceptable Actions

Discouraged Actions

Unacceptable Actions (Violations of Academic Integriy)