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.

Assignment 4

For your next assignment, due on Friday, March 4th, you will simply complete the exercises you previously skipped over that required use of exterior calculus. These exercises can all be found in the class notes, and include:

  • Chapter 5, Exercise 13 (Hint: read very carefully the end of Section 3.2)
  • Chapter 5, Exercise 16
  • Chapter 6, Exercise 20
  • Chapter 6, Exercise 26

You should also carefully read Section 6.3 (which leads up to Exercise 26), which provides an alternative perspective on the Laplacian to the finite element approach you derived in your last homework, and will be very useful to understand for upcoming assignments.  For the exercises in Chapter 5, it may also be helpful to review your reading of Chapter 2 (on the geometry of surfaces), re-thinking these concepts in terms of differential forms.  (For example, the Weingarten map \(dN\) and differential \(df\) of the immersion can both be viewed as vector-valued 1-forms.)  These exercises are a bit more challenging than the “warm up” exercises from your readings, so please post comments if you have any trouble.

Assignment 3

Assignment 3 is now available! You can view the document here. This assignment will be due at 11:00 pm on Feb 23rd. The submission guidelines are identical to the previous assignment. Electronic submissions are preferred (cc’ing both kmcrane@cs.cmu.edu and nsharp@cs.cmu.edu), but if you wish to submit a physical document, do so in class or at 215 Smith Hall. Smith Hall locks to the public at 5:00 pm, so plan accordingly.

The document linked above has several questions inline, numbered as Exercises 18-26. You DO NOT need to complete exercises 20 and 26, and you might not understand Section 6.3 — these all depend on exterior calculus, which we will be covering soon.

Once again, there is a coding component at the conclusion of the document, where you will be asked to implement some of the ideas described in the preceding text. A corresponding 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 Assignment3.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 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 Assignment3.py along with your written submission.

Again, we will only be considering triangular meshes without boundary for this assignment. There is a collection of such meshes in the Assignment3/Boundaryless_Meshes/ directory on which to test your code. Also, the codebase wiki has some information on matrix computation in Python which you might find useful.

Be warned, this coding portion is a bit more involved than the previous assignment, I suggest you start early so you have time to ask questions as needed.

Assignment 2

Assignment 2 is now available! You can view the document here. This assignment will be due at 11:00 pm on Feb 4th. The submission guidelines are identical to the previous assignment. Electronic submissions are preferred (cc’ing both kmcrane@cs.cmu.edu and nsharp@cs.cmu.edu), but if you wish to submit a physical document, do so in class or at 215 Smith Hall. Smith Hall locks to the public at 5:00 pm, so plan accordingly.

The document linked above has several questions inline, numbered as Exercises 12-17. You DO NOT need to complete problems 13 and 16; they involve material we have not yet covered. Also, there are some sections of text that might not recognize yet, such as a discussion of the Laplace-Beltrami operator and some use of exterior calculus. Don’t worry about these for now — they are not necessary to solve the problems, and we will be covering them in class in the upcoming weeks.

At the end of the document there is a coding assignment asking you to implement several of the quantities defined in the preceding text. A corresponding 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 Assignment2.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. To submit the coding portion, email us your modified copy of the file Assignment2.py along with your written submission. There are some additional questions at the conclusion of the coding section, include your responses in the written submission.

To keep things simple, we will only be considering meshes without boundary for this assignment. There is a collection of such meshes in the Assignment2/Boundaryless_Meshes/ directory on which to test your code.

To investigate your code, run it as we did with the test assignment. Pressing ‘h’ will print (to your terminal) a list of commands supported by the program. Clicking on the mesh will print useful information about faces/edges/vertices.

Finally, on Tuesday (1/26) in class, I will be leading a workshop with a quick introduction to computing with meshes and a guide to using the course library. It is highly recommended that you attend! Please refrain from asking me any questions about the codebase until after that workshop.

Assignment 1 (Codebase)

As Keenan mentioned in class, the second component of getting started is downloading the codebase and getting a sample program to run. The codebase for this course is available at https://github.com/nmwsharp/DDGSpring2016.

The README displayed on that page contains some instructions for getting started and running a test program, as well as some other information. If you are an experienced programmer, feel free to ignore the instructions and do as you wish, there’s nothing especially unusual going on here (just get the test program working!).

To verify your success, please email me (nsharp@cs.cmu.edu) a screenshot of the window displaying the bunny by Jan 21. Don’t forget to include “DDGSpring2016” in the subject line.

There will surely be some hiccups getting started with this code, don’t hesitate to contact me with issues either via email or blog comments. I will also be holding an optional help session next Tuesday (Jan 19) around 5:00 so we can get things sorted out. If you aren’t available at that time and you would like to meet, let me know.

Assignment 1

A1 Assignment 1 has been released, and can be obtained by clicking on the image or on this link.  It will be due on January 21st at 11:00pm.  Solutions can be submitted either electronically (cc’ing both kmcrane@cs.cmu.edu and nsharp@cs.cmu.edu), or physically either in class or outside 215 Smith Hall.  (Note that Smith Hall is typically locked in the evening, so if you want to submit physically you should plan to do so a bit earlier!)  Solutions will be graded not only on correctness, but also on legibility and quality of exposition—part of our goal this term is to help you become better mathematical communicators; solving problems in a vacuum helps nobody.  We will take points off for terrible handwriting—for those of you who suffer from this affliction, we strongly suggest you use $\LaTeX$.  Please make sure to put both your name and your Andrew ID on your submission.

The coding portion of this assignment is forthcoming—basically you will just need to get the code skeleton up and running on your machine, and we will be glad to assist you (potentially in a recitation session).

If you don’t know where to get started with some of these proofs, just ask!  We are glad to provide further hints, suggestions, and guidance either here on the website, via email, or in person.  Office hours are still TBD, but let us know if you’d like to arrange an individual meeting.  Also, don’t be afraid to chat with your classmates—you will learn much more together than you will in isolation.

Good luck!