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.
- Submission: Written/analysis problems are submitted on Gradescope; coding problems are submitted via GitHub Classroom. Follow submission instructions precisely (commit, push, verify).
- Late policy: You may submit late up to 96 hours (4 days) after the deadline. A flat 20‑point penalty applies to any submission from 1 second to 96 hours late. No submissions are allowed after the late window.
- Extensions: Reserved for significant emergencies (major illness/injury). Minor issues (small illness/injury, travel, interviews, etc.) do not qualify for extensions. For non-emergency issues (especially those close to the deadline), extensions are generally not applicable. Instead, the late-submission days are available and should be used for such circumstances. If you believe you do qualify for an extension, make a private EdStem note indicating your request and how much work you have already completed. Extensions will be declined if minimal prior work appears in your Git history.
- Autograding & verification: Coding problems are graded solely via automated tests.
- Advice: The most consistent advice from successful students: start early and work consistently.
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:
- If the violation minor (i.e limited to one assignment and not an exam) the instructor will opt for the FSR process.
- 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.
- 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.
- The OAI will acts as an impartial 3rd party to determine if a violation has occurred.
- If a violation is deemed to have occurred, the OAI will recommend a sanction.
- 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
- Discussing high-level ideas (no coding terms at all) with other students is fine. Do NOT pseudocode together as often it becomes detailed and yields the same code.
- Asking course staff (instructor, TAs, tutors) for help or to look at your code.
- Copying test cases from other students or EdStem when test cases are not graded is fine since it serves to teach you something, and there is no risk that you will get points for the work of other students.
- Looking up references (where nothing specific to the assignment is provided or input) on C++ library containers, functions, and syntax. However, looking up “similar” examples to a homework assignment is NOT okay.
Discouraged Actions
- Looking up similar programs or using AI for for references, hints, or approaches. Only by struggling with the design process will you learn and recall important lessons and appreciate better solutions.
- Asking AI to debug your code when you have an issue. The critical thinking of engineering is your key skill and attribute. To solve large problems in the future, you have to learn how to isolate, characterize, and solve smaller problems now. Using AI to help you actually cheats you of the very experience you need to be a valuable contributor in the future.
Unacceptable Actions (Violations of Academic Integriy)
- Copying another current, past, (of future?) student’s work
- Any kind of collaboration or use of 3rd party tools on exams.