Assignments
There will be roughly one assignment per week. One of the objectives of the class is for you to come up with solutions to new problems. The assignments are working towards this goal. Approach the assignments as a process: read the problems, understand what they are asking, come up with initial ideas, try to understand why they work or, if not, why not; analyse, and ask: Can this be improved?. Completing the assignments is supposed to be interactive between you, your partner and the LAs in the study groups.
Partner optional: You may work with one partner (see course policies for details on what this means).
Turn in on Gradescope. The assignments will be released on Gradescope, and you need to submit your solution on Gradescope. One member of the team should submit the assignment and should add the other member to the “team” so that (s)he can get the credit.
Honor code: Assignmentsare at collaboration-level 1; that is, verbal collaboration without solution sharing (check course policies for details on what this means). There are lots of resources online, such as lecture notes, animations, visualizations, practice problems, video recordings, which you are encouraged to explore to help you understand the material. However, you must be careful not to search the internet for specific problems with the intent to get hints for their solutions. Searching for the assignment problems on the internet violates academic honesty for this class.
Assignment style guidelines: An important goal of the assignments is to develop a good algorithmic writing style — your solutions need to look professional and easy to understand (think: page from a textbook). Credit: inspired by […] most recently by Stanford University, cs161
Please type. Feel free to annotate the pdf to add figures and formulas.
Write each problem on a separate page (this leaves us space to write comments)
One of the skills you’ll develop is how to communicate algorithms clearly. We expect assignments problems to be clear and easily human-readable.
Assignments should be typed (unless the homework guidelines ask you to hand-write) and clearly written with complete sentences and well-organized logic, and should definitely not be your first draft.
When the problem asks for an algorithm, please write pseudocode. Pseudocode should be clear enough that a student who took 1101 can understand what your algorithm is doing, and could implement it in a language of their choice, without thinking too hard. But, pseudocode is not code; it shoud be easy to read and understand and should omit trivial details that add clutter.
It is good practice to include an English description of what your pseudocode is doing, to help out the reader.
Try to put yourself in the position of the reader. If you hadn’t been thinking of this problem for 3 hours, would your answers make sense to you?
Try to finish the assignment early, then step away for a day or two, and then come back to it and read it again. Chances are you’ll find something you can write more clearly.
Look at posted solutions for style advice (if solutions are not posted, ask for them).
Remember the office hours and come talk to us. The homeworks are not exams—they are not there to test you— they are there to create opportunities to learn. We expect everyone to do well on the homework, and to take the time to write carefully.
With quick questions, message me on Slack. I respond the same day.