Homework

There are eight six homework assignments to complete over the course. Homework will be released in the course box folder (also linked under Course Info on the main page): https://duke.box.com/s/50wr93dlvs4ic4pvfinhpe1cirhiecqv. These are intended to provide structured opportunities for students to engage with the algorithmic examples from class. The homework assignments typically require some mathematics, coding (in any language, Java or Python 3 recommended), and writing. Homework assignments should be completed independently or in groups of two: see the collaboration policy for details on what collaboration is allowed in groups of two, and see the academic integrity policy for details about what outside resources are allowed when completing homework assignments.

Submission. You will submit materials for the k’th homework assignment on Gradescope under two separate assignments: HWk Report and HWk Code. You should turn in a pdf containing all of your written solutions for the report, and a source code file containing all of the code you wrote for the assignment. When you submit your code, the interface may mention an autograder; you can ignore this, as the assignment will not be autograded. Your grade will be recorded on the report; the source code is to show your work and for reference during grading.

Format. The pdf you submit for the report should be typed, and solutions to individual questions should be clearly labeled. You should use LaTeX (which is free) or some other editor of your choice to prepare your reports. If you use an editor like Microsoft Word, make sure to convert the final document to a pdf, confirm that the symbolic math from the equation editor is properly formatted, and submit the pdf.

Collaboration. You may complete this assignment independently or in a group of two students. If you work with another student you should submit a single report and a single code file with both of your names, and should use the group feature when submitting on gradescope to indicate that you worked as a group. Do not split up the assignment, and each only complete half of the problems. Instead, complete each portion of the assignment by working together synchronously (for example, by pair programming with screen sharing over zoom or some other similar service) or by working independently and then coming together to merge solutions and check one another’s work. In both cases, each student should understand and be able to explain the submitted work in their own words. These are the only acceptable ways to collaborate. Violation of these instructions will be considered a violation of the Duke Community Standard.

Allowed Materials. You can use any standard library functions and data structures in in your programming language of choice (Java or Python 3 are recommended). You may also use any slides or notes from class or reference materials posted on the course website. You may search the internet for basic definitions, terminology, and language documentation (for example, checking the syntax for array slicing in python), but you may not use anyone else’s code (either another student’s or from the internet), nor may you search the internet for solutions or descriptions of solutions to the homework problems. Violation of these instructions will be considered a violation of the Duke Community Standard. If you absolutely cannot get one component of your assignment to work and need to look up the solution, you must cite where you got the solution from. You may not get credit for that part of the assignment, but you will get credit for subsequent components of the assignment, and will not have violated the Duke community standard.