Assignment 5

Assignment 5 is now available! There is no standalone document for this assignment, just a code skeleton in the class repository and section 8.1 of the class notes. You do not need to submit the exercises in the text, only the programming component. This assignment will be due at 11:00 pm on March 28th. The submission guidelines are identical to the previous assignments. Electronic submissions are preferred (cc’ing both kmcrane@cs.cmu.edu and nsharp@cs.cmu.edu).

As with the previous assignments, a code skeleton is now present in the course repository, which you should download and modify. Note that the core library has also been updated, so you will need to re-download (or git pull, if you’re using git) the entire repository. The skeleton in Assignment5.py contains empty methods in which you will implement your solution, all of your modifications must be between the lines which say BEGIN YOUR CODE and END YOUR CODE. Some of the function names referenced in section 8.1 of the text might not perfectly align with the codebase; don’t worry about this, just fill out the skeleton code. To submit the coding portion, email us your modified copy of the file Assignment5.py.

Additionally, include in your email a paragraph or two commenting on the results of this assignment. If your implementation is successful, analyze the results and comment on why they make sense. If you do not have faith in your results, comment on what appears to be wrong and what may be the cause.

Final Project Proposal

We have updated the assignments page with additional information about your final project, as well as some pointers to get you started. Note that your initial project proposal is due on Monday, March 14th by 5pm. Please send us an email containing a short (1-2 paragraph) description of your proposed project including:

  • the geometric object you plan to study,
  • a few preliminary citations/pointers to papers, books, etc., that describe this object and its place in computation, and
  • a tentative goal for what you hope to achieve in the final “implementation” part (i.e., the code and/or proof/derivation you hope to write).

The first two parts of the project (writeup and in-class presentation) should help you refine your final project goal; it is perfectly fine if you don’t have all the details worked out at this point. Also: if you’re having trouble coming up with a project idea, or don’t understand the scope of the project, please still send us a preliminary proposal—we are more than happy to help you brainstorm during office hours. The goal here is to do something small, but interesting. To quote Nobel laureate Richard Feynman,

“The worthwhile problems are the ones you can really solve or help solve, the ones you can really contribute something to. A problem is grand in science if it lies before us unsolved and we see some way for us to make some headway into it. I would advise you to take even simpler, or as you say, humbler, problems until you find some you can really solve easily, no matter how trivial. You will get the pleasure of success, and of helping your fellow man, even if it is only to answer a question in the mind of a colleague less able than you. You must not take away from yourself these pleasures because you have some erroneous idea of what is worthwhile.

I have worked on innumerable problems that you would call humble, but which I enjoyed and felt very good about because I sometimes could partially succeed. … No problem is too small or too trivial if we can really do something about it.