Assignments are automatically highlighted based on the current date.
Homeworks must be done individually: each student must hand in their own answers, and each student must write their own code in the programming part of the assignment. It is acceptable for students to collaborate in figuring out answers and helping each other solve the problems.
List all collaborators and external resources: list every person with whom you discussed any problem in any depth, and every reference (outside of our course slides, lectures, and textbook) that you used. This is not a license to get around turning in your own work, but is in your best interest to avoid us suspecting cheating. Collaborating with others and not acknowledging it is considered plagiarism.
You can discuss and work out a solution with your listed collaborators, but do not take notes, photos, or other artifacts of your collaboration. Erase the board you were working on, and once you're alone, write up your answers yourself. If you ever find yourself copying notes (e.g., from a whiteboard) or pasting code, you have crossed the line. Highly similar phrases, equations, or code excerpts shared between homeworks will leave us with a high degree of suspicion that the Collaboration Policy was not followed. We use automated tools to check for such similarities across submissions.
Appropriate use of AI tools (e.g., ChatGPT, Gemini, Claude, Github CoPilot, Cursor, or any other LLM-based tech): AI tools can serve as valuable resources for personalized tutoring, which can facilitate your learning of course material. You are strongly encouraged to use it to clarify any questions you may have or to learn about related concepts discussed in class. It is also very helpful for unfamiliar syntax--how do I swap two dimensions of this PyTorch tensor? However, we define AI tools as collaborators, and therefore your AI usage must respect our Collaboration Policy. You can use AI tools to help work through problems, but you may not ask it to do the problem for you. You can ask how to accomplish some coding operation (e.g., syntax) but you cannot ask it to implement an algorithm and copy and paste the solution. You must write up your answers yourself, having closed the AI tool and without consulting the AI responses. Emphasizing the guidance of above: when you are writing up your homework, you may not use notes, screenshots, code, or other artifacts from your AI interaction. If you ever find yourself copy/pasting anything from anywhere into your homework, you have violated the Collaboration Policy.
You are required to document your use of AI tools on the homeworks. If you use AI tools to guide you when completing a homework problem, you must document all prompts and AI responses, and you must include this documentation in your submission PDF. You must also include the following attestation: "I did not use notes, screenshots, code, or other artifacts from this AI interaction when writing up my solutions."
Appropriate use of AI coding assistants (e.g., Github CoPilot, Cursor, etc): These tools can automatically write code based on comments and even predict what should be written next. We strongly recommend you do not use AI coding assistants for your homework. It would be very difficult to use these tools in a manner that adheres to our Collaboration Policy. You should gain experience using these tools effectively, but that should be done outside of this course. You're taking this course so you can learn the material and become a proficient and independent thinker. To get there, you need to go through the effort of deriving and implementing algorithms on your own, even if you later use libraries or tools to make coding easier. In this exciting new era of powerful AI tools, a huge part of becoming a productive and hirable ML practitioner requires an understanding of ML fundamentals and practice (including theory and coding) so that you can effectively collaborate with AI agents, verify their results, and guide them when they (frequently!) produce unintended output. You need to be able to correct their mistakes, and that requires establishing independent expertise.
Zero-tolerance policy: By turning in the first assignment, you acknowledge that you have read and understood the Collaboration Policy. Any questions about the policy should be raised at least 24 hours before the assignment is due. There are no warnings or second chances. If we suspect you have violated the Collaboration Policy, we will report it to the College of Engineering who will complete an investigation.
We will allow 5 total late days. On any particular homework, you may use at most two late days. If an assignment is submitted late and this exceeds your 5 late days, that assignment will receive 0 credit. Late days may be spread over any number of assignments, but the total number may not exceed 5. Late days are rounded up so that an assignment that is 28 hours late accumulated 2 late days.
Late days should be used only for unpredictable challenges or personal emergencies. This is an advanced/graduate course, and we expect you to responsibly manage your time across courses and assignments. These are predictable challenges--we post all homework and exam dates as of the first day of class so that you can proactively schedule your time. No additional late days will be granted. If you procrastinate through your late days and then have a personal emergency with no late days remaining, in fairness to all students in the course, we cannot grant additional late days--the late days should have been reserved in case of emergency, not used to enable insufficient time management earlier in the quarter. In extreme cases where more leniency is genuinely needed and warranted, we typically need to get other offices and advisors involved to support you.
All requests for regrading should be submitted to Gradescope directly. Office hours and in person discussions are limited solely to asking knowledge related questions, not grade related questions. If you feel that we have made an error in grading your homework, please let us know with a written explanation, and we will consider the request. Please note that regrading of a homework means the entire assignment may be regraded which may cause your grade on the entire homework set to go up or down. Regrade requests will be accepted starting 24 hours after grades are released and must be submtted within the following 7 days (24*7 hours).
Each homework assignment will have two submissions: one written submission submitted as a single PDF, and one code submission to Gradescope. Code submissions will be autograded on Gradescope. If you are enrolled in 546, you will have a separate (third) submission for the B problems. When submitting to gradescope, please link each question from the homework in gradescope to the location of its answer in your homework PDF. Failure to do so may result in point deductions (Instructions). We expect all assignments to be typeset (i.e., no photos or scans of written work). This can be done in an editor like Microsoft Word or Latex (highly recommended). See the Textbooks Tab above for guides to using Latex.
We will use Python for the programming portions of the assignments. Python is a powerful general-purpose programming language with excellent libraries for statistical computations and visualizations. During the first week of the quarter, we will provide a tutorial to jump-start your transition into working in Python.
Here are some Python related resources:We strongly encourage you to use Python 3 (versus Python 2) so that if code is provided on an assignment there are no compatibility issues. This also helps with debugging if everyone is on the same version.
Jupyter notebooks are a convenient way to write Python programs, especially for machine learning applications where you are actively exploring data. Therefore, you may complete your assignment using Jupyter notebooks but before you turn in your assignment, be sure to run all code blocks to make sure the current state reflects the code, if run. To be safe, dump the kernel to drop state and then rerun your code. If you use Jupyter notbooks, export your code into a *.py file before submitting it (some editors call this "Export Notebook to Executable Script").