CSE 331 Homework Policies

Spring 2024

This page contains policies, suggestions and explanations of things related to CSE 331 homeworks. Please note that not following some of these policies can lead to a letter grade reduction or an F in the course and not following some could lead to you getting a zero on your homework submission.

  1. I am personally chuffed having an all UTA team. They're all awesome and y'all are in good hands. However, there are certain things that crop up (e.g. conflict of interest) that don't hold for graduate TAs. We'll address them later in this document.

  2. So e.g. a grade of B will go down to B-.

ChatGPT is not allowed

This is just a corollary of the above but just to be sure-- y'all are not allowed to use ChatGPT for your homeworks. Using ChatGPT for your homeworks will result in an immediate course grade of F.

Note that the above restriction applies to all questions on the homeworks (including the programming question).

In order to ensure compliance with this, here are the various rules you will have to follow:

Grade reduction in the course

Deviating from the rules above will be considered cheating with a minimum penalty of a letter grade reduction1 for the course for the first violation of academic integrity. If the violation is a student's second violation in CSE then this will lead to an automatic F in the course.

A clarification

Note that the above does not mean that you cannot consult other sources to understand the basic material better: e.g. if you do not follow a lecture and want to read up on that material from another source that is fine. However, once you start working on a homework the above rules come into effect.

Collaboration policy

Collaboration is generally allowed on the non-programming questions on the homeworks. Here are the policies regarding collaboration:

  1. You are allowed to collaborate provided you have thought about each problem for at least 30 minutes on your own. This will help you in the exams.
  2. You can collaborate on any homework in a group of size at most 3, including yourself. Note that you cannot collaborate with different groups for different problems.
  3. You must write the name of everyone in your group on your submission. You will have the ability to do this in your Autolab submission.
  4. You can only discuss the problems with your group till you come up with the ideas (e.g. proof ideas): the details (e.g. the formal proof) is something you should work on alone.
  5. Your submitted homework must be written in your own words. Everything, including the proof idea, has to be written up individually. In particular, at no point of time should you have in your possession the written homework of someone else.
  6. For the non-programming questions, you will have to explicitly list your collaborator(s) in your submission file (will you will then submit on Autolab-- before you can submit your file, Autolab will ask you to confirm that your submission file lists your collaborator(s) in it). If you did not collaborate with anyone else, then just say none for collaborators.

NO collaboration on programming question

There is no collaboration allowed on the programming question on the homeworks. The programming questions have to be done individually. Unlike some of your previous CSE courses, you cannot even discuss data structures with other students.

You are also not supposed to look up programming based questions unless it is one of the allowed sources for programming: see the list of allowed sources for more specifics.

Grade reduction in the course

Deviating from the rules above will be considered cheating with a minimum penalty of a letter grade reduction for the course for the first violation of academic integrity. If the violation is a student's second violation in CSE then this will lead to an automatic F in the course.

If the violation involves the use of ChatGPT, irrespective of whether it is the student's first violation or not, then it will result in an automatic F letter grade in the course

Some clarifications

In addition to your collaborators, for your Homeworks you can talk to:

Other than your collaborators and the two rules above, you should not discuss the homework questions with anyone else (including but not limited to tutors and students who have taken CSE 331 before).

Grade reduction in the course

Deviating from the rules above will be considered cheating with a minimum penalty of a letter grade reduction for the course for the first violation of academic integrity. If the violation is a student's second violation in CSE then this will lead to an automatic F in the course.

In case you are not sure

If you are not sure if you consulted with a source or someone that was not allowed, please check with the instructor before submitting your homework. If the instructor thinks that there was no inappropriate use of sources or collaboration, then you can go ahead and submit your homework. Otherwise you can just not submit your homework without incurring any penalty. Note that it is perfectly OK to get a source officially approved by sending the instructor a private post on piazza: if approved, the instructor will make the post public on piazza and then it officially becomes an allowed source. If not, then just don't submit your homework.

Preparing your homework submissions

Please keep the following points in mind when you are working on writing up your solutions (note that not following some of them will result in you losing ALL points irrespective of the technical merits of your solution):

Grading details

Changes were made recently

In Fall 16, we changed how grading is done in CSE 331 as compared to previous years. First, all submission will be on an online system (Autolab). Second, we finally have programming assignment as one of the question on the homeworks. Third, for the first time we transitioned into an all undergraduate TA group in CSE 331. 2

Submitting your homework

We will be using Autolab for homework submission and grading. In particular,

  1. The third question will be a programming assignment and will be auto-graded by Autolab.
  2. The other two questions will be for designing algorithms and/or analyzing its correctness. You will submit your solutions for the two questions (and each of their two parts) separately as PDF documents: i.e.

    4 PDFs to submit!

    If you are submitting everything then you should have to upload four (4) PDFs: one each for Q1 part (a), Q1 part (b), Q2 part (a) and Q2 part (b).

    Typeset homeworks are preferred but we will accept handwritten homeworks that are scanned as PDF. The TAs will grade the submitted homeworks and add grading notes on your Autolab submission that you will be able view on Autolab itself.

    PDFs cannot be more than 3MB

    Please note that Autolab will not accept files of size more than 3MB. This is almost never an issue if you are typesetting your homeworks but it can be an issue if you are scanning your handwritten solutions. If you are beyond 3MB, then you will need to compress your PDF file: if you do not know how, just Google it .

Grading scheme

We now outline the general grading framework that we will use for all homework submissions. Note that this framework by necessity is abstract: the actual interpretation of the abstract "levels" below will depend on the actual problem on hand. Next we present the framework for the programming assignment followed by those for the non-programming question.

Grading guidelines for programming question

  1. Each programming question will have $10$ test cases:
    • $4$ easy test cases
    • $4$ medium test cases
    • $2$ hard test cases
  2. Passing of each test case will get you $10\%$ of the points (and no points if your submission fails a test case). Note that a submission that does not compile automatically means the code failed all test cases.
  3. Your entire submission will also have a timeout limit (this is to make sure you are implementing an efficient algorithm): if your code does not complete all test case within the timeout limit then that would count as your code failing all the test cases. However, if you want to run your code on fewer than all test cases you will have that option on Autolab.
  4. Autolab will automatically grade all the programming assignments using the rubric above.
  5. We will release $3$ test cases along with the HW ($2$ easy and $1$ medium test case(s)). All the other $7$ test cases will be not given to you before your final submission.

What the programming problem is NOT about

The aim of the programming question is not to test your programming skills. This should generally be the easiest question on the homework: the idea here is that if you understood all the basic concepts in the lectures, then you can apply those to solve the programming assignment. In all the programming assignments, you will just have to write one function: we will provide you with all the rest of the wrapper code. However, we do hope that this exercise is valuable to you as you will immediately see how to implement (the theoretical) things we have seen in class.

Multiple submissions

You can do multiple submissions till the deadline of 8:00pm on the Friday the homework is due.

Grading guidelines for non-programming questions

There will be two questions that will not be programming based and will be graded manually by TAs as follows:

  1. For each question, the student’s submission will be graded at one of the following levels:
    • Level 0: This means the student gets $0\%$ of the points. This is for submissions where the student shows zero comprehension: either in understanding the problem or of its algorithmic solution.
    • Level 1: This means the student gets $25\%$ of the points. This is for submissions where the student does show some comprehension of the problem and/or the required algorithm/solution but there is at least one flaw that cannot be repaired.
    • Level 2: This means the student gets $50\%$ of the points. This is for submissions where the student gets the main idea but there are still flaws that can be repaired but only with a lot of extra work.
    • Level 3: This means the student gets $80\%$ of the points. This is for submissions where the student has got the main idea but the execution is a bit faulty. However, these faults could be fixed without too much extra work.
    • Level 4: This means the student gets $95\%$ of the points. The solution is almost perfect but the student forgot to handle a weird corner case.
    • Level 5: This means the student gets $100\%$ of the points. Absolutely flawless submission.
  2. A level will be assigned to each part, e.g. algorithm idea, algorithm details, proof idea and proof details.
  3. Failing to write a proof idea or algorithm idea will automatically make it level 0.
  4. In some cases, we might skip level 4 all together.

Dependencies among various parts

When a question asks you to present an algorithm and then analyze its correctness and runtime, then your graded levels for correctness and runtime would depend on your graded level for the algorithm itself. E.g., one can give a completely correct runtime analysis for a completely incorrect algorithm. In such a case the runtime analysis will be graded at level 0. In particular,

The inherent vagueness of the guidelines above

As you might have noticed the description of the levels above is a bit too abstract. This is on purpose because it is impossible to give the exact specification without having the problem at hand and/or giving away the solution to the problem. Once the grading has been done, we will send you the specific grading rubric we used to grade your non-programming questions.

Point distribution

Each homework will be graded out of 100 points, which will be distributed as follows:

  1. The first question (which will be the easier proof-based question) be worth 50 points and will have two parts:
    • Part (a) will be an easy warmup to the actual problem and will be worth 10 points,
    • Part (b) will be the actual problem and will be worth 40 points.
  2. The second question (which will be the harder proof-based question) will be worth 25 points and will have two parts:
    • Part (a) will be an easy warmup to the actual problem and will be worth 10 points,
    • Part (b) will be the actual problem and will be worth 15 points.
  3. The third question (i.e. the programming question) will be worth 25 points.
Of course, our judgment on the easiness of the second and third questions is subjective. So here is what we will do for you:

Getting help on Q1 and Q2

Recitations will go over part (a) of both Q1 and Q2. The idea there is to go into enough details that after attending the recitation, it should fairly easy to get the full 10 points. In addition, you can show your solution to part (a) to a TA during office hours and get feedback on your solution(s).

Conversely, you will not get much help from TAs on part (b) beyond making sure you understand the problem itself. However, no more hints (beyond what is provided in the problem itself or comes from part (a)) will be given by the TAs.

Overall the idea is that we will provide as much help as possible on part (a) so that you can get started on the problem and will have some idea on how to proceed on part (b).

You have to submit part (a) to get credit for it

While you can assume part (a) as a given for part (b), to get credit for part (a) you have to submit your solution for part (a) separately from part (b).

Overall Homework score

This is how the homeworks will contribute to your grade. In particular, your homework score will contribute to your letter grade in one of following two ways-- we will pick the option that will give you a higher score--

  1. We will drop your two lowest homework scores, i.e. pick the highest $6$ homeworks scores (each of which is out of $100$).
  2. Add up the following three scores:
    • Consider only the top $6$ Q1 scores, i.e. add up your highest six Q1 scores (each of which is out of $50$).
    • Consider only the top $6$ Q2 scores, i.e. add up your highest six Q2 scores (each of which is out of $25$).
    • Consider only the top $6$ Q3 scores, i.e. add up your highest six Q3 scores (each of which is out of $25$).

Grading consistency and conflict of interest

Multiple TAs will be grading the same non-programming question (for different students), which if not handled correctly can lead to grading inconsistencies. One of the main reasons we use the level system for grading above is to avoid these potential grading consistencies. Also, the TAs will be coordinating among themselves so that the grading is consistent and fair (possibly in that order).

Another potential issue is that some of you might know some of the TAs. To avoid conflict of interest, we have instituted two policies:

  1. TAs have declared conflict of interest for specific student enrolled in CSE 331. A TA will never be assigned to grade the submission of a student with whom they have a conflict of interest.
  2. We will add another layer of randomization to make things even fairer: every submission will be assigned a random TA (with whom the student does not have a conflict) for grading. In other words, you will not know upfront who will be grading any of your given submissions till after they have been graded.

Thing to avoid

In case you are tempted to ask one of the TAs for a "favor" if you are friends with them from outside of class, I have just one advice: don't. All the TAs will say no so please do not try to use up your friendship capital for something that will not lead to anywhere good.

Other helpful tips

Here are some suggestions for you. Following these are not mandatory but we strongly encourage you to do so. (Interspersed are some general comments related to homeworks.)

  1. Start early! The homeworks will be challenging, so start thinking about the homework problems early. Just reading a problem and letting it "marinate" in your head helps a lot. In particular, please do not start working on the homework the night before it is due.
  2. Working with algorithms is an art and the only way you can get better (and hence, do well in the exams) is to practice. Homework problems are the minimal practice you should do. We encourage you to work on other exercises from the book. If you do work on a problem and have a question, come and talk to us.
  3. Typically, the homework will have three problems: the third one being the easiest (and a programming assignment), the first being medium hard and the second one being the hardest problem. However, note that this is just our guideline and what is easy for us might be hard for you and vice versa. Also the homeworks in general will get harder as the semester goes on (as the material will become more involved). Hence, the easy problem on HW 10 might be harder than the hard problem in HW 1. Finally, since the third question will be a programming question and the other two will be proof-based questions, it can be hard to do a fair comparison on "hardness" of these problems.
  4. We will assume that you will collaborate in your homeworks (when permitted). Thus, when we think of a question as being hard, it is assumed that it will need a fair bit of work even as a group to solve that problem. Typically, the easy/programming problem should be solvable if you understand the lecture. Note that there will be no "plug and chug" kind of questions in the homework (e.g. run the algorithm on this specific input), so you might have to spend some time outside of the lecture to really understand the material covered in class.
  5. In a homework or exam if you do not follow why you lost some points, go and talk to the grader and try to figure out where you went wrong. We do not really like it when someone comes and is only interested in getting more points but we like it when someone comes by and wants to understand what went wrong and improve.
  6. Another plug for working on the material outside the lectures: the exams will not test what was taught in the lectures verbatim. One of the goals of this course is to get you to think abstractly and algorithmically about problems. This cannot be force-fed but only comes about when you do the algorithmic thinking on your own. Understanding what I say in a lecture is a start but it is by no means a sure-fire way of really understanding the material (One way to find out if you understand the material-- teach it to someone else!) Working on problems is one way to build your algorithmic thinking.
  7. Many of the problem statements will be pretty verbose and will not have crisp mathematical description. As we will see in the lectures, this is unavoidable in real life and we want you to have practice in looking at a problem statement in English and then converting it into a precise mathematical problem. In real-life there are red herrings: information in the "problem statement" that have nothing to the real mathematical problem. So in some homework problems, we will slip in some red herrings!
  8. One of the coolest things about algorithms is that they are applicable pretty much everywhere. A goal of the homeworks is to give you practice in using algorithms in different situations. In particular, the questions will ask you to apply the material covered in class outside of the context they were used in class. For some questions this might not be apparent from the question itself: in most such cases after the homeworks are turned in I will put a post on piazza connecting the question to the real-life application.
  9. We will focus heavily on proofs. If your proof skills are rusty, please work on them ASAP. You could go through your CSE 191 book to do so. If you want another source, this book is solely focused on how to prove things:

    Daniel J. Velleman, "How to Prove It: A Structured Approach (2nd Ed)." Cambridge University Press, 2006.

  10. To help in the transition, till the mid-term exams I will do the following two things:
    • Each homework will have a solved question so that you see a model solution when you are writing up your own.
    • The CSE 331 support page also might have some helpful resources.