You may turn in hardcopy (neatly handwritten or printed out) together with code printouts; or you may submit an electronic version, including code. If you submit electronically, please submit as a PDF file.
The final code/write-up should be yours, but please do feel free to talk to each other about the homework. If you come up with an idea together, or if someone helps you debug your code, or any other such thing, just give me a citation so that I can tell.
On problem 1, you might not see the band multiply perform better than the dense multiply until the matrix becomes quite large! Don't panic if this is what you see; just show what happens.
Again for problem 1, there are a lot of possible experiments. Don't drown me in results: think about how you want to present your data. You could show performance in terms of 3D surface plots or contour plots for a range of n and b values, for example; or you could show plots for a few fixed bandwidths as n grows, for fixed b/n as n grows, or for fixed n as b grows.
For problem 4, show the (semilog) plots of computed semiperimeter minus pi versus iteration for both the original code and your modified code, and make at least some comments about why you see what you see. If you fell like going further, you can get a lot of insight by treating the computed side length at step k as exact, and only looking at the rounding error induced by going from step k to step k+1. Unless you feel like it, it's fine to omit the analysis of how errors propogate from one step to the next for this problem.