Final project
What to submit?
We will look at your github repository for grading. This repository should contain:
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.A
project.cabal
file, constructed viacabal init
. See the cabal documentation for help. You can use outside libraries in your project as long as you list them in your cabal file. You can also look at the cabal files in the homework assignments.cabal new-build
should build your projectcabal new-exec
should run your project
What to expect at the DEMO
Bring your laptop with your project ready to go to the demo.
After you demonstrate the functionality of your project, expect to give answers to the following questions:
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. One 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.