Final project
What to submit?
We will look at your github repository for grading. You don't need to submit anything individually for your project. You can make edits to your repository any time up until your grading session. However, do not edit your project after your grading session is over.
Make sure that your repository contains the following files:
A
README.md
file. Give your names, pennkeys, and an overview of the files in your project. Briefly describe each of the main components and the order that they should be read. Also list any additional libraries that your project depends on and any special instructions for compilation.Config files:
package.yaml
andstack.yaml
. These two files should list any dependencies for your project so that we can build and run it ourselves.
What to expect at the grading session
Your grading session will last 30 minutes and will start by you giving a quick (i.e. five minute) demonstration of your project in action. Be prepared to run your code and tests!
After you demonstrate the functionality of your project, expect to give answers to the following questions by showing us the relevant source code. You will not have time to explain all of your code during your demo, so decide ahead of time what parts of your project are the most relevant for us to discuss.
What are the main modules of your program? Why did you divide them up in this way?
Are there any parts of the code that you are particularly proud of? Where did you spend the most time polishing your implementation? What did it look like before? (In preparation for this question, you may want to have the the old version in comments available for comparison.)
What parts of your project correspond to something that we talked about in class?
Was there any part of your project that you had to scrap and redesign? What didn't work the first time? What was the hardest part to get correct? Why?
What sort of testing did you do to verify the correctness of your code? (Unit tests, quickcheck properties, etc.)
What is something you would like your program to do but it doesn't do yet? How would you do this extensions?
If you reimplemented this project in another language, what language would you choose? What would be easier? What would be more difficult?
What did you learn from this project?
Grading
Projects will be graded subjectively, along the axes described in the project rubric, based on the demo and code review. The purpose of the project is to demonstrate how well you learned the course material; so we are not just concerned with whether your project does something cool, but whether it shows off what you have learned this semester.